knock sensor? map sensor? both should set a code, but i'm assuming that the mil probabbly isn't hooked up right. where you said it only happens when it's cold, try unplugging the O2 sensor, also try unplugging the coolant temperature sensor. it will force the ecu in limp mode. if the engine coolant temperature sensor sets high, it makes the ecu think the engines is 300* if it fails near open it'll set to -50 when you unplug it, the computer thinks it's broken and ignores the input.