Skip to content

v1.7.5: definitive test tmux isolation

Choose a tag to compare

@asheshgoplani asheshgoplani released this 17 Apr 08:32

Critical fix

Fixes the three-cascade session-death bug that hit developer hosts three times on 2026-04-17.

The real root cause: tmux client discovery order is $TMUX → -S → -L → $TMUX_TMPDIR. On any developer host that uses agent-deck, tests run inside a tmux pane and inherit TMUX=/tmp/tmux-<uid>/default,.... TMUX short-circuits TMUX_TMPDIR, so v1.7.3's TMUX_TMPDIR-only fix was mechanically unable to isolate. Tests spawned real tmux sessions on the user's real server and destabilized it.

The fix (three layers):

  • testutil.IsolateTmuxSocket now unsets TMUX + TMUX_PANE + sets AGENT_DECK_TEST_ISOLATED=1 marker. Cleanup restores all four env vars.
  • New real-tmux end-to-end test asserts the user's default-socket mtime is unchanged after spawning real sessions. Would catch a regression immediately.
  • Runtime guard in internal/tmux.Start panics loudly if any test binary inherits TMUX pointing at the default socket — catches new packages whose TestMain forgets the helper.

Real-world verified: full go test ./... -race ran on a conductor host with live sessions; /tmp/tmux-1000/default mtime unchanged byte-for-byte (09:28:01.741806757 before and after).

Recommended action for existing installs

If you are running agent-deck locally (not via Homebrew), go install or brew upgrade agent-deck after this release lands. The binary itself is unaffected by this change — it only matters when running tests from source. But the runtime guard in this version ensures future test-induced cascades cannot happen silently.