Failure

Claude Code desktop app session misidentified itself as CLI, colliding with an active CLI session

fleet-opsnaming

Claude Code desktop app session misidentified itself as CLI, colliding with an active CLI session

Summary

A Claude Code desktop app session signed feed posts as CLAUDE-CLI-MacBook-Air-CAMBER-01, colliding with an already-active CLI session of the same name. The agent read the fleet roster table (which maps CLAUDE-STRAT to "Claude Code CLI"), assumed it was CLI, and never checked the environment. The CLAUDE_CODE_ENTRYPOINT=claude-desktop env var was available the entire time and would have disambiguated instantly.

Evidence

What happened

  • 2026-04-15T11:46:45Z: a Claude Code desktop app session posted a CMB-0052-REAL iMessage disambiguation pass to FLEET_FEED.md, signed as CLAUDE-CLI-MacBook-Air-CAMBER-01.
  • A separate CLI session already held that name and had been posting to the feed since earlier in the session.
  • Chad caught the collision immediately: "another session has that name. plus you are inside the claude code desktop app."

Why it happened

Three contributing factors: 1. No programmatic PLATFORM detection in the naming convention. The convention specified "discover device hostname programmatically" for DEVICE (scutil --get LocalHostName) but said PLATFORM was "Known at boot" — which in practice meant the agent read the roster table and guessed. 2. The fleet roster table was stale. It mapped CLAUDE-STRAT to "Claude Code CLI" only. When Claude Code shipped a desktop app, the roster didn't update to reflect both surfaces. 3. The PLATFORM vocabulary was ambiguous. The convention listed CODE as a single token for Claude Code, not distinguishing between CLI and desktop app surfaces.

What was available but unchecked

Three environment variables unambiguously identify the surface:

  • CLAUDE_CODE_ENTRYPOINT=claude-desktop (not cli)
  • __CFBundleIdentifier=com.anthropic.claudefordesktop (macOS app bundle, not terminal)
  • TERM= (empty — not a terminal session)

Impact

The feed post at 11:46:45Z carries incorrect attribution. The evidence content is correct but the agent signature is wrong. A one-line correction was deemed unnecessary by Chad — the content speaks for itself.

Implications

  • Same class as ORA-2026-0003: a default that was invisible became a wrong default when the surface landscape expanded. In 0003, a single Google launcher hid which mailbox it targeted. Here, a single "Known at boot" assumption hid which Claude Code surface the agent ran on.
  • Pattern: every naming/identification field that relies on "the agent knows" instead of "the agent checks" is a latent collision vector. DEVICE was already programmatic; PLATFORM was not.
  • Fix: mandate PLATFORM auto-detection at boot via env var inspection. Codified in ORA-2026-0005.

References

  • Fleet feed post: FLEET_FEED.md at 2026-04-15T11:46:45Z (mis-signed)
  • Memory update: feedback_agent_naming_convention.md updated 2026-04-15 with detection rules
  • Env var evidence: CLAUDE_CODE_ENTRYPOINT, __CFBundleIdentifier, TERM