fix(#808): never borrow a session identity for non-tmux senders
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
When MOSAIC_AGENT_NAME is unset and the sender has no tmux client context ($TMUX empty), agent-send.sh fell back to 'tmux display-message -p #S', which outside tmux reports the LAST-ACTIVE session on the server. A nameless sender was silently stamped as whichever seat touched tmux most recently, forging that seat's identity in the preamble. Incident (2026-08-20, host sb-it-1-dt): a nameless non-tmux sender was stamped 'peggy', a live seat, on a message delivered TO peggy. Reproduced end-to-end before the fix; capture in the seat evidence note. Fix: the display-message fallback now runs only when $TMUX is set (inside tmux it resolves the caller's own session — the case #808 built it for). Outside tmux with no name, the label is host:unverified. Deliberate identity remains available via -S. Chosen over refusing the send: nameless senders are legitimate; the defect was borrowing an identity, not lacking one. Tests: suite made hermetic (TMUX controlled explicitly; results no longer depend on the caller's context — previously tests 9/10 inherited the caller's TMUX). New case 9b: no-tmux sender is labeled unverified and never a borrowed name (red on original: host:local-agent borrowed from the fake tmux server; green after). 19/19 in both caller contexts.
This commit is contained in:
@@ -126,7 +126,16 @@ if [ -z "$SRC_LABEL" ]; then
|
||||
src_host=$(hostname -s 2>/dev/null || echo "?")
|
||||
src_sess=${MOSAIC_AGENT_NAME:-}
|
||||
if [ -z "$src_sess" ]; then
|
||||
src_sess=$(tmux display-message -p '#S' 2>/dev/null || echo "?")
|
||||
if [ -n "${TMUX:-}" ]; then
|
||||
# Inside tmux: display-message resolves against this client's own session.
|
||||
src_sess=$(tmux display-message -p '#S' 2>/dev/null || echo "?")
|
||||
else
|
||||
# Outside tmux with no name: display-message reports the LAST-ACTIVE
|
||||
# session — someone else's identity (measured 2026-08-20: a nameless
|
||||
# non-tmux sender was stamped "peggy", a live seat, forged silently).
|
||||
# Stamp an explicit unverified label instead; deliberate senders use -S.
|
||||
src_sess="unverified"
|
||||
fi
|
||||
fi
|
||||
SRC_LABEL="${src_host}:${src_sess}"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user