Quick answer: Unity Input System action event handler firing without the originating control after action.Disable()? Disable cancels pending callbacks but doesn't clear the queue - guard handlers with control validity.
Action callback fires; callbackContext.control is null. Crash.
Validate in handler
if (context.control == null) return;Defensive; safe across disable/enable cycles.
Or wait for next frame
Process events in Update, not callback. Skips the partial-state window.
Audit Disable timing
Most Disable bugs stem from same-frame callbacks. Document the pattern.
“Action disable doesn't atomically drain callbacks. Drain is best-effort.”
If you toggle actions at runtime, defensive callback handlers are non-optional. The bug class is silent except when it isn't.