The evaporative emission codes are the most common reason a check engine light comes on in a car that drives perfectly. They are also the codes where the cheapest possible fix genuinely is the most likely one, which is unusual enough to be worth explaining properly.
What the system does
Petrol evaporates in the tank, and that vapour is a pollutant. Rather than vent it, the vehicle routes it into a canister of charcoal that holds it. Later, when the engine is running under suitable conditions, a purge valve opens and the engine draws that stored vapour in and burns it.
For any of that to work the system has to be sealed. So the computer tests the seal, either by pulling a vacuum on it and watching whether it holds, or by sealing it and watching the natural pressure change as the fuel cools after a drive.
The three leak codes are the same test at different sizes
This is the part that is rarely explained, and it is the whole key to the diagnosis.
P0455 is a large leak, roughly a millimetre and a half across or bigger.
P0442 is a small leak, around half a millimetre.
P0456 is a very small leak, around a fifth of a millimetre.
They are not three different faults. They are one test with three thresholds. The size tells you how hard the leak is going to be to find, and that changes how you should approach it.
A large leak is often visible. Get underneath with a torch and look for a hose hanging off a fitting or a cracked charcoal canister. A very small leak will never be visible, will not smell, and needs smoke testing to locate.
Start with the cap, and mean it
The fuel filler cap is a genuine seal in the system, and it is by far the most common single cause across all three codes.
For a large leak, the usual story is a cap left on the roof at the filling station or never turned until it clicked.
For the small and very small leaks, the cap does not have to be loose at all. The rubber seal hardens with age, and a hardened seal will pass a casual look while still leaking enough to set P0456. That is why replacing the cap on a very small leak code is a reasonable first move rather than a guess. Caps are inexpensive, and it resolves a large share of these.
Buy the correct cap for the vehicle. The venting behaviour is part of the design and a generic cap that physically fits will not always seal or vent the same way.
Why the code seems to come and go
The evaporative monitor does not run continuously. It runs only when a specific set of conditions is met, and those typically include the fuel level sitting somewhere between about a quarter and three quarters of a tank, the engine having been off long enough to cool, and the ambient temperature falling within a range.
So the test might run once on one journey and not again for several days.
Two consequences follow. First, a code that clears itself and returns weeks later is not intermittent in the way it looks. The fault was there the whole time and the test simply did not run. Second, and more importantly, confirming a repair takes patience. Clearing the code and driving to the end of the road proves nothing. You need several days of ordinary driving before the monitor runs again and tells you whether the fix held.
This is also why an emissions test can fail a car with no light on: if the monitor has not completed since the last time the codes were cleared, it sits in a not ready state and that alone is a fail on most inspections.
When it is not the cap
Work outward from the tank. The vapour hoses run from the tank forward to the canister and on to the engine, and rubber lines harden and split with age, usually at a bend or where they have been rubbing against something.
The filler neck rusts, particularly on anything that has seen salted winter roads, and perforation there is the failure that actually smells of fuel.
The two solenoids, the purge valve at the engine end and the vent valve at the canister end, both seal the system and both fail. A vent valve that will not close makes every leak test meaningless, and it sets its own code, P0446. If that is stored alongside a leak code, fix the valve first, because until it seals the leak readings are not trustworthy.
Finally, if a fuel pump has been replaced recently, suspect the large seal on the tank sending unit. Reusing or pinching that O ring is a common way to create a leak that was not there before the job.