The behavior you're describing, immo coming back after a power/ground cycle, almost always means the change isn't landing in persistent storage. On NGC3 the SKIM/immo state isn't just one flag; there's typically a stored value plus a validation copy, and on init the module reconciles them. If you only patch the live/working copy (or an OBD tool writes a soft state), the controller rewrites it back from the reference on the next power-up, so it looks "re-enabled."
A few things worth separating out:
- Fact from your post: SKIM is disconnected before and after, three tools tried, state reverts on cycle. That points at a persistence/validation issue, not a wiring or write-failure issue.
- General guidance: On these you usually need the immo-off applied in the actual EEPROM/flash region that survives reset, and any mirror/checksum that guards it has to be corrected in the same write. An OBD-level "disable" that doesn't touch the stored reference will revert.
- Inference: If HPT is the only one that sticks, it's likely writing the persistent location (and fixing the guard) rather than a runtime flag. That's consistent with what you're seeing.
To point you at the exact next step, can you post:
- The controller part number and HW/SW rev
- Vehicle year/model/engine
- How you're reading and writing, OBD vs bench/boot, and whether you have a full read including EEPROM (not just cal)
- Whether the tools reported a successful write/verify or just a "done"
If you can attach the read (or at least the EEPROM dump), that's the fastest way to confirm whether the immo status and its validation copy are both being handled.