Guide

Active, pending, and permanent codes: what the status means

A stored code is not one thing. Learn the difference between pending, confirmed, and permanent DTCs, when the check-engine light actually turns on, and why status matters for inspections and intermittent faults.

Last updated:

Three states, three meanings

Scan tools rarely give you a plain list of codes. They give you codes with a status, and that status changes what you should do next. A pending code means a monitor ran its test and failed it once. The controller wrote it down but has not committed to it—no lamp, no announcement, just a note that something did not look right on one trip.

A confirmed code, often labeled active or current, means the fault met the manufacturer’s threshold for maturity. On most emissions monitors that means failing on two consecutive trips where the enable conditions were met, though certain faults qualify in a single trip. This is the code that turns on the malfunction indicator lamp and the one most people mean when they say “I have a code.”

A permanent code is the one you cannot erase with a scan tool. Required on later OBD-II vehicles, it mirrors a confirmed emissions code and clears only when the vehicle itself re-runs the relevant monitor and passes. Its whole purpose is to close the loophole of clearing codes right before an inspection—if the repair is real, the vehicle will retire the permanent code on its own.

  • Pending — failed once, no lamp, may or may not become real
  • Confirmed / active — failed enough to matter, lamp is typically on
  • History / stored — was confirmed, lamp may have self-extinguished
  • Permanent — mirrors a confirmed code, only the vehicle can clear it

When the light comes on—and goes off

The malfunction indicator lamp is tied to confirmed emissions-related faults, not to every code in the vehicle. That is why a transmission, ABS, or body code can sit in memory with no dash warning that a driver would connect to the engine. It is also why “the light is off, so it is fixed” is unreliable: on most vehicles the lamp self-extinguishes after roughly three consecutive trips where the monitor runs and passes, while the code itself remains in history for a while longer.

Misfire is the loud exception. A flashing check-engine light means misfire severe enough to risk catalyst damage right now. That is not a “read the code next weekend” situation—reduce load, get off the throttle, and diagnose promptly. Our OBD scanner guide covers the safety side of that in more detail.

Manufacturers also use a two-trip philosophy for most emissions monitors precisely so a single odd data point does not alarm the driver. A tank of bad fuel, an unusually cold start, or a one-off sensor glitch can fail one test. Requiring a repeat before lighting the lamp is a filter, and pending status is where you get to see what the filter caught.

Why pending codes are worth your attention

Pending is where intermittent faults live. A connector that only loses contact over a specific bump, a sensor that drifts out of range on the coldest morning of the month, a hose that leaks until heat swells it shut—these fail a test now and then without ever reaching the two-trip threshold. If you only read confirmed codes, that vehicle looks healthy while the driver keeps complaining about a stumble you cannot reproduce.

Pending codes are also the early warning on a repair you just did. After a fix, monitors have to run again before anything is confirmed. If a pending code shows up during that window, your repair did not fully address the fault, and you know it before the customer does. Checking pending status a few drive cycles after a repair is one of the cheapest quality checks available.

Read pending status the same way you read a confirmed code: note it, capture whatever freeze-frame or snapshot data the tool offers, and look at what the code monitors. A pending lean code (air–fuel ratio too lean vs ~14.7:1) plus a driveability complaint is a real lead. A single pending code with no symptoms and no repeat may genuinely be noise—but you want that to be a decision you made, not something you never saw.

Inspection readiness and the clearing trap

Emissions programs generally look at three things: whether the lamp is commanded on, whether any permanent codes are present, and whether the readiness monitors have completed. Clearing codes resets those monitors to incomplete, and a vehicle with too many incomplete monitors fails for that reason alone, even with a dark dashboard and nothing stored. Clearing right before a test is the most reliable way to fail one.

Permanent codes make the shortcut worse. Because the scan tool cannot erase them, a cleared vehicle can arrive with no lamp, no confirmed codes, and a permanent code still sitting there announcing that a real fault was recently present. Only the vehicle re-running the monitor and passing will retire it.

The honest path is the fast one: fix the fault, clear once, then drive the enable conditions so monitors can complete—typically a mix of cold start, city speeds, steady cruise, and sometimes an extended highway run. Then recheck readiness and confirm nothing new is pending. That sequence takes a day or two of normal driving and turns an inspection into a formality.

The heavy-truck cousin: active versus inactive

Heavy trucks on J1939 use a related but distinct vocabulary. Faults are typically reported as active—present right now, usually with a lamp illuminated—or inactive, sometimes called previously active, historical, or logged. Alongside each fault the controller keeps an occurrence count and often first- and last-seen data with engine hours or odometer values.

That occurrence count is genuinely useful, and light-vehicle OBD-II has no clean equivalent. An inactive fault with one occurrence and thousands of hours since it last appeared is very different from an inactive fault with forty occurrences and the last one an hour ago. The second is an intermittent that is very much alive, even though nothing is active at this moment.

The discipline carries across both worlds: record the fault, its status, its counts, and its conditions before you clear anything. Clearing inactive faults on a truck erases exactly the history that would have told you the fault is recurring. Our J1939 SPN and FMI guide covers how those fault identifiers are built, and TruckCodeLookup handles the lookup once you have the numbers.

Educational overview only. Trip logic, lamp behavior, and inspection rules vary by manufacturer and jurisdiction—confirm with service information and your local program.