Quick answer: Unity Input System rebinding overrides one player's bindings affect another's? Override storage uses the action asset reference, not the actor - clone the asset per local player.

Local co-op: P1 rebinds Jump. P2's Jump now uses P1's binding.

Clone per local player

var playerActions = Instantiate(actionsAsset);
player.PlayerInput.actions = playerActions;

Each player gets its own asset instance. Overrides are isolated.

Or use control schemes

Per-scheme bindings. Each scheme has its own overrides; shared base asset.

Verify with debugger

Input Debugger shows per-actor binding state. Cross-talk surfaces as identical overrides on different actors.

“Action assets are shared by default. Local multiplayer requires explicit clones.”

If you ship local multiplayer, the cloned-asset pattern is non-optional. Build it from day one; retrofit is painful.

Related reading