Skip to content

[Bug]: Per-account Claude folder keeps its own sessions/, so Claude Code peer messaging splits in two #35957

Open

Description

@mgntrn

What happened

Orca 1.4.227, macOS arm64. Since Orca launches Claude with CLAUDE_CONFIG_DIR=~/Library/Application Support/orca/claude-profiles/<account id>/home, sessions started that way register in <profile>/home/sessions/, while sessions started before (or outside Orca) register in ~/.claude/sessions/.

Claude Code's peer discovery (ListAgents, SendMessage to a session name) reads only its own config dir's sessions/. So a coordinator session started before the account switch and the workers it starts afterwards with orca worktree create --agent claude cannot see or message each other: SendMessage fails with "no agent named … is reachable" in both directions. We fall back to orca terminal send / terminal read.

The profile's other shared folders (projects, session-env, file-history, shell-snapshots, todos, paste-cache, tasks, plans, transcripts, history.jsonl, plugins, skills) link to ~/.claude. sessions doesn't, and linking it by hand doesn't hold: the profile sync removes a sessions symlink that points at ~/.claude/sessions (it reports synced).

Expected

Sessions on the same machine and user can find each other whether they use ~/.claude or an Orca profile, or at least Orca documents that per-account sessions/ isolates peer messaging, and says how to bring older sessions over (restarting them with the profile's CLAUDE_CONFIG_DIR).

Repro

  1. Start a Claude session in an Orca terminal before Orca's per-account folder exists (or with CLAUDE_CONFIG_DIR unset).
  2. After Orca switches to per-account folders, run orca worktree create --agent claude ... from that session.
  3. In the new worker, ListAgents doesn't list the first session, and SendMessage to its name fails.

Related: #29870 (running sessions keep the old account), #33170 (per-account folder links).

Activity

  1. ggbdpq commented on Oct 29, 2026

    @ggbdpq
    Contributor

    Confirmed against the source and happy to take this. The per-account CLAUDE_CONFIG_DIR split means a coordinator outside Orca's profile layout and Orca-launched workers register their peer sessions in different sessions/ roots, and Claude's peer discovery only reads its own config dir — so neither side can see the other. I'll investigate whether discovery can be taught to consult both roots (with the version-caveat your report mentions) and open a PR with a failing-first test.

  2. ggbdpq commented on Oct 29, 2026

    @ggbdpq
    Contributor

    Heads-up on ordering: I claimed this at 15:58 and had a working fix, but @brennanb2025 was assigned at 16:02 — deferring to the assignee.

    Leaving what I found in case it saves some digging:

    • Root cause is on Orca's side, not the CLI. Claude's peer discovery reads only <configDir>/sessions (verified against CLI 2.1.312; no env override for the registry path). Orca's profile surface list in src/main/claude-accounts/claude-profile-history.ts explicitly excludes sessions, and since the Re-land Claude per-account folders (#24434, #26405) with the upgrade and proxy fixes #26801 re-land (Oct 9) unlinkSharedSessions actively tears down any legacy link into the default home — that's the "sync removes my manual symlink" the report mentions. The one-line rationale there ("live-process registry belongs to each folder's daemon") appears to have no failure record behind it; the pre-revert stack (fix(claude): activate account profiles and remove credential replay (Step 4 of 4) #24434) shared sessions without per-account leakage.
    • Fix sketch (+29/−41, on fix/claude-peer-discovery-config-split, c1ce3c7004, for reference only): include sessions in the shared list (it's PID-keyed machine-local process metadata, not account state — credentials/settings/MCP stay per-account), drop unlinkSharedSessions, keep seed provisioning's exclusion so new profiles don't inherit stale registries. Failing-first tests: legacy link preserved, real-dir merge gives two-way visibility, later writes propagate (16/16 in claude-profile-history.test.ts; claude-accounts package 250 passed).

    Happy to hand the branch over or close on request.

  3. deleted a comment from AmethystLiang on Oct 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

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