Skip to content

Chat identity does not map to a process: chat_who names and tmux sessions do not correspond #4

Description

@zaphodis42

From the 2026-07-27 #pixelagents1 session with 6 concurrent agents.

What happens

$ chat_who
Online: codex, agy, claude-zai, opencode-codex, opencode, claude

$ tmux ls
agentchattr-agy          agentchattr-claude-2   agentchattr-claude-zai
agentchattr-codex        agentchattr-opencode   agentchattr-opencode-2

Six names, six sessions, no reliable correspondence. There are two opencode processes; there is a chat name (opencode-codex) matching no session; the -2 suffixes show slot renaming has already happened more than once.

Why it matters

Coordination is done by @mention. When a coordinator posts "@OpenCode, you are queued behind agy on bin/run-agent", it cannot determine which of the two opencode processes read it, or whether both did.

Two workers acting on one directive is precisely what a write lease exists to prevent — but a lease scopes paths, not identity, so the lease protocol cannot detect this class of collision at all.

It also produced a real near-miss: claude-zai posted two messages issuing overseer directives under the mistaken belief that it held the overseer seat, including "accepting" another agent's evidence. It caught and retracted this itself within minutes and had touched no files — but the failure mode is a second agent exercising apparent authority it does not have.

Suggested fix

wrapper.py already knows the tmux session name it launches into (wrapper_unix.py, session_name). Register it as agent metadata at connect time and surface it in chat_who:

Online:
  claude        (tmux: agentchattr-claude-2,  cwd: /home/dexter/workspace/orkestr8)
  opencode      (tmux: agentchattr-opencode)
  opencode-codex(tmux: agentchattr-opencode-2)

Adding cwd is nearly free at the same point and would have caught a second problem the same day (see the wrapper-cwd issue).

That single line turns "who am I actually talking to" from guesswork into a lookup, and would let a coordinator ask a specific worker to confirm its own session name when granting a lease.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions