P0128 does not mean your engine is overheating - it means the opposite. The PCM models how hot the coolant should be after a given run time at a given air temperature, and the actual coolant temperature never got there. Nine times out of ten a thermostat is stuck open, letting coolant circulate through the radiator before the engine has warmed up. The engine still runs, but it runs cold, which costs you fuel economy, keeps the heater lukewarm, and on many cars blocks closed-loop fuel trim entirely.
The most common wasted repair on P0128 is replacing the coolant temperature sensor because it is cheap and easy to reach. The sensor is usually reporting correctly - it is accurately telling you the engine is cold. Verify with an IR thermometer before you buy anything.
Difficulty: Moderate. Time: 1 - 2 hours. DIY parts: $25 - $90. Shop total: $250 - $500.
Very DIY-friendly on most transverse four-cylinders where the housing is on top and reachable. Gets unpleasant on V6 and V8 layouts where the thermostat hides under the intake. The real skill is burping the system afterward - trapped air causes a false overheat that will scare you into thinking you made it worse.
Coolant flush at the manufacturer interval. Old coolant loses its corrosion inhibitors, and the resulting scale is what makes a thermostat stick and a temperature sensor read lazily. Nearly every stuck-open thermostat has ten-year-old coolant sitting behind it. Coolant is the interval people forget, because nothing reminds you until a code appears. Log this car in ServiceSage and the coolant flush shows up on your upcoming list before it becomes a P0128. Track this maintenance free.
P0128 is one of the most common codes on the Cruze, Equinox, Malibu, and Silverado. On the 1.4L turbo (Cruze, Sonic) the thermostat and its plastic housing usually fail together - replace them as an assembly and pressure-test for leaks afterward. The Silverado V8 thermostat is a cheap part but sits under the intake ducting, so most of the bill is labor. Chevrolet maintenance schedule
On the F-150 and Escape, P0128 almost always means a lazy thermostat - EcoBoost engines run cool enough that a slightly stuck-open unit trips the code quickly in winter. Replace with an OEM-temperature thermostat (not a cooler aftermarket unit) and burp the cooling system fully. Ford maintenance schedule
The 3.6L Pentastar (Wrangler, Grand Cherokee, Ram 1500) is a frequent P0128 setter, typically between 60k and 100k miles. The fix is the same stuck-open thermostat, but on the Pentastar it sits under the front edge of the intake manifold - budget more labor than a typical V6.
Toyotas set P0128 less often; when a Corolla or Camry does, it is usually a worn original thermostat past 150k miles. Use a genuine Denso or Toyota unit - aftermarket thermostats are a common cause of repeat P0128 on Toyotas - and bleed the system fully so the heater core circuit is not airlocked. Toyota maintenance schedule
Related trouble codes: P0217 - Engine Coolant Over-Temperature Condition, P0113 - Intake Air Temperature (IAT) Sensor 1 Circuit High, P0171 - System Too Lean (Bank 1)
DIY reinstall reference: Thermostat housing bolt torque specs on WhatSizeBolt, our sister site.