Skip to content

seats: cc and cc2 launchers start outside $HOME and set their own config dir; drop the dead claude-credentials seed - #450

Closed
mecattaf wants to merge 1 commit into
mainfrom
fix/seat-launch-dir
Closed

mecattaf wants to merge 1 commit into
mainfrom
fix/seat-launch-dir

Conversation

@mecattaf

Copy link
Copy Markdown
Owner

What

Makes the two-seat Claude Code arrangement durable after Tom's hand re-login of 2026-09-22: cc is ~/.claude (personal Claude Max), cc2 is ~/.claude-work (leger.run Claude Max).

  • fish launchers. cc/cac/cc2/cac2 share one function. Claude Code never saves workspace trust for $HOME (docs, security: "trust acceptance is held for the current session only and is not written to disk"), which is why cc2 typed in ~ showed "Accessing workspace" on every launch. From ~ the launcher now moves into $CLAUDE_ENVELOPE (default ~/today); elsewhere it starts where you are. cc clears CLAUDE_CONFIG_DIR explicitly: a terminal opened from inside a cc2 session inherits it, and the old alias then silently started cc2. TALLY_SEAT names the seat. cc3 lines untouched.
  • secrets. Remove claude-credentials.age, its secrets.nix entry and the seedClaudeCreds activation script. The token was dead since the August 4 rotation; a seed that fires whenever the credentials file is absent can only revert a fresh /login after a rebuild.
  • AGENTS.md. A seats paragraph: which login is which directory, the launch rule, the meter paths.

Measured

  • fish -n on config.fish; nix-instantiate --parse on both nix files.
  • Launcher behaviour with a stub claude under runtime-test: from ~ both seats start in the envelope; cc has CLAUDE_CONFIG_DIR unset even when the parent shell carries it; cc2 sets ~/.claude-work; --continue and extra args pass through; a missing envelope returns 1 with a message.
  • nix eval .#nixosConfigurations.coordinator.config.age.secrets: claude-credentials gone, the other nineteen intact.

Not done here

No rebuild, no merge (Tom's). The per-seat writable settings split (/model cannot persist because settings.json is a store symlink for both seats) is a follow-up.

🤖 Generated with Claude Code

…fig dir; drop the dead claude-credentials seed

Two Claude Code seats live on the coordinator: cc in ~/.claude (the personal
Claude Max login) and cc2 in ~/.claude-work (the leger.run login). Tom re-logged
both by hand on 2026-09-22; this makes the arrangement durable.

- fish: cc/cac/cc2/cac2 become one launcher. Claude Code never saves workspace
  trust for $HOME (docs: "trust acceptance is held for the current session only
  and is not written to disk"), so a seat typed in ~ showed "Accessing
  workspace" on every launch; the launcher now moves into $CLAUDE_ENVELOPE
  (default ~/today) when started from ~. `cc` clears CLAUDE_CONFIG_DIR
  explicitly: a terminal opened from a cc2 session inherits it, and the old
  alias then silently started cc2 (measured with a stub claude under
  runtime-test). TALLY_SEAT names the seat to hooks and receipts. cc3 lines are
  untouched.
- secrets: remove the claude-credentials seed and its age file. The token had
  been dead since the 2026-08-04 rotation, and a seed that fires whenever
  ~/.claude/.credentials.json is absent could only revert a fresh /login after
  a rebuild. Verified: nix eval of the coordinator's age.secrets no longer lists
  it and the other nineteen are intact.
- AGENTS.md: the seats paragraph (which login is which directory, the launch
  rule, where the meters are).

Not a rebuild, not a merge; both are Tom's.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@mecattaf

Copy link
Copy Markdown
Owner Author

Superseded by #421, which merged the identical patch into theme-switcher as e3d1c70 (same patch-id as this branch's af0e870: 3c65b8e3c35d94852fbcd5e7a0c1bbfed1bff521).

The seats change reaches main when #417 lands. Closing to avoid applying the same patch twice.

@mecattaf mecattaf closed this Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant