team --fix repairs three identity cells, and one of them is repaired by typing into somebody's terminal. The flag does not say that, and the two things it does are not the same kind of act.
pane label + agent key written through the terminal's own API
CLI session name `/rename <name>` typed into the pane and submitted
The first changes an attribute of a pane; the second goes through the session itself. Different mechanisms, different failure modes, and a report that says which one happened is more useful than one that does not.
Three gates already stand in front of the keystroke: the cell must be mismatch, the type must declare a rename command, and the pane must report ready.
This also just grew. Until #1102 the keystroke path was gated on the agent type and reached claude-code only; it now reaches every type that declares a rename command, which includes codex. The blast radius changed without the name changing.
Shape
team --fix everything, unconditionally -- including the keystroke
team --fix-pane-names the pane naming only -- no keystroke
team --rename-sessions the session name -- types into the pane
--fix stays the umbrella and keeps meaning "make the identity right", which is what it is for and what people will reach for. The two specific flags exist so that "do not touch anyone's keyboard" is expressible, and so the report can say which of the two happened.
Naming, since the first two attempts at these names were both wrong in instructive ways:
- not
--fix-agent-id: the distinct agent key exists on herdr only. On tmux the "key" is @agmsg_agent, a pane option holding the same team:name string as the title — there is no separate id. A flag named for it would name something one driver does not have.
- not
--fix-pane-id: the pane id (w1:pB, %3) is assigned by the terminal and never changed by this. It is the one thing in the vicinity the flag does not touch.
--fix-pane-names is true on both drivers: tmux sets the title and the pane option, herdr sets the label and the key, and all of it is naming the pane.
Why separate flags at all
Not because typing into a session is dangerous — it is an ordinary thing to do, and the three gates in front of it (the cell must be mismatch, the type must declare a rename command, the pane must be ready) are enough. The reason is simply that the two halves are separable work, and sometimes you want one of them: repairing a listing without waiting on nine sessions to be at a prompt, or renaming sessions without touching pane attributes. A single flag cannot express either.
--fix stays unconditional and does everything, including the keystroke.
Acceptance
--fix-pane-names never pokes. A test asserts nothing is typed into any pane, not merely that the label changed.
--rename-sessions does only the session, and reports poked/poked_unverified/skipped per member as it does today.
--fix does both and its report distinguishes which cell each result belongs to.
- The help text and SKILL.md say that one of these types into a session. A person reading the flag list should not have to read the source to learn that.
team --fixrepairs three identity cells, and one of them is repaired by typing into somebody's terminal. The flag does not say that, and the two things it does are not the same kind of act.The first changes an attribute of a pane; the second goes through the session itself. Different mechanisms, different failure modes, and a report that says which one happened is more useful than one that does not.
Three gates already stand in front of the keystroke: the cell must be
mismatch, the type must declare a rename command, and the pane must reportready.This also just grew. Until #1102 the keystroke path was gated on the agent type and reached
claude-codeonly; it now reaches every type that declares a rename command, which includes codex. The blast radius changed without the name changing.Shape
--fixstays the umbrella and keeps meaning "make the identity right", which is what it is for and what people will reach for. The two specific flags exist so that "do not touch anyone's keyboard" is expressible, and so the report can say which of the two happened.Naming, since the first two attempts at these names were both wrong in instructive ways:
--fix-agent-id: the distinct agent key exists on herdr only. On tmux the "key" is@agmsg_agent, a pane option holding the sameteam:namestring as the title — there is no separate id. A flag named for it would name something one driver does not have.--fix-pane-id: the pane id (w1:pB,%3) is assigned by the terminal and never changed by this. It is the one thing in the vicinity the flag does not touch.--fix-pane-namesis true on both drivers: tmux sets the title and the pane option, herdr sets the label and the key, and all of it is naming the pane.Why separate flags at all
Not because typing into a session is dangerous — it is an ordinary thing to do, and the three gates in front of it (the cell must be
mismatch, the type must declare a rename command, the pane must beready) are enough. The reason is simply that the two halves are separable work, and sometimes you want one of them: repairing a listing without waiting on nine sessions to be at a prompt, or renaming sessions without touching pane attributes. A single flag cannot express either.--fixstays unconditional and does everything, including the keystroke.Acceptance
--fix-pane-namesnever pokes. A test asserts nothing is typed into any pane, not merely that the label changed.--rename-sessionsdoes only the session, and reportspoked/poked_unverified/skippedper member as it does today.--fixdoes both and its report distinguishes which cell each result belongs to.