A code is not simply present or absent. It moves through three states, and most people only ever look at the middle one.
Pending
A self-test failed once. The module noticed and recorded it, but wants to see the same failure on a subsequent drive cycle before committing.
No warning lamp. Nothing on the dashboard. The car drives normally and the owner has no idea.
This is the most useful list on the scanner and the one least often read. A pending code is a fault caught before it becomes a symptom — and an intermittent fault is far easier to trace while it is still occasional than after it becomes constant.
Most scanners hide pending codes under a separate menu, often labelled "pending" or "mode 7". It is worth the extra two taps every time you plug in.
If the next drive cycle passes the test, the pending code clears itself and nothing further happens. That is the system working as designed.
Stored, or confirmed
The test failed again. The module is now satisfied the fault is real, lights the lamp, saves the freeze frame, and stores the code.
This is what a free code read at a parts shop returns. It is also the state most people mean when they say "the car has a code".
Once the fault stops recurring, the lamp usually extinguishes after a number of consecutive clean drive cycles, but the stored code remains in memory for considerably longer — often another 40 cycles. A lamp that went out on its own has not erased the evidence, and reading it is worthwhile.
Permanent
This one exists specifically because people clear codes before emissions tests.
A permanent code is written when a code is confirmed, and it cannot be erased by a scanner, and cannot be erased by disconnecting the battery. Nothing an owner can do removes it.
It clears only when the module itself has run the relevant test enough times, over its own drive cycles, and passed. The vehicle decides, not the technician.
A permanent code fails an emissions test on its own, regardless of the lamp being out and regardless of the stored list being empty.
What this means in practice
The old approach — clear the codes the night before, drive to the test station with no light on — stopped working when permanent codes were introduced. And it made things worse in two ways at once.
Clearing the codes also resets the readiness monitors, so the vehicle arrives with tests incomplete, which is itself a fail in most jurisdictions. And if the fault was real, the permanent code is still there.
The only route through is to fix the fault, clear the codes, then drive normally for several days — cold starts, steady cruising, a mix of conditions — until the monitors report ready and the permanent code has cleared itself.
Reading all three before you start
A full picture takes about a minute:
- Stored codes — what the lamp is about, with the freeze frame.
- Pending codes — what is about to become a problem.
- Permanent codes — what will fail a test even after everything else is clean.
- Readiness monitors — how many tests have actually run since the last reset.
A vehicle with an empty stored list, one pending code and two monitors not ready is telling a much more complete story than "no codes".
When the lists disagree
A permanent code with nothing stored means the fault was cleared but the module has not yet re-verified. Drive it and check again in a few days.
A pending code that keeps appearing and clearing means a genuinely marginal fault — a sensor drifting near its threshold, a connection that is intermittent, a leak that only opens up cold. Those are the ones that eventually become stored codes at the least convenient moment, and the pending list is the only warning you get.
