Claude Code
Claude Code has a first-party Chorus plugin. It provides Chorus tools and workflow skills in an interactive Claude Code session, and it can run as a supported Chorus daemon backend.
Before you install, create an agent key by following Prepare agent access.
Background agents (0.22.0)
Section titled “Background agents (0.22.0)”Claude daemon wakes wait up to 60 minutes (3600000 ms) after the main turn for background children. CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS takes precedence over CHORUS_CLAUDE_BG_WAIT_CEILING_MS. This is not a whole-wake timeout. Parents must collect completion or explicitly stop their children before ending the turn. Forced background termination is abnormal even with a raw zero exit code; Chorus attempts to comment on the triggering idea/task without repairing task status or retrying automatically. See daemon timeout settings for zero/empty-value risks, configuration, and diagnostics.
Install the plugin
Section titled “Install the plugin”The quickest path is the chorus CLI, which installs the plugin and stores the credential
for you:
npm install --global @chorus-aidlc/choruschorus agents add --agents claudeEnter the Chorus URL and agent key when prompted. chorus agents add runs
claude plugin marketplace add / claude plugin install for you and writes CHORUS_URL,
CHORUS_API_KEY, and CHORUS_AGENT_PROFILE into the env block of your user-global
~/.claude/settings.json, so an interactive Claude Code session authenticates with no manual
environment setup. Restart Claude Code afterward.
To install by hand instead, set the credential in the launching shell:
export CHORUS_URL="https://chorus.example.com"export CHORUS_API_KEY="cho_REDACTED"Then add the plugin from inside Claude Code:
/plugin marketplace add Chorus-AIDLC/chorus/plugin install chorus@chorus-pluginsRestart Claude Code after installation.
Enable remote start
Section titled “Enable remote start”Skip this section if you only use Chorus from an interactive Claude Code session.
Otherwise, follow Connect an agent runtime and select
claude-code as the backend. Verify the connection in the foreground before using
Operate the Chorus daemon to keep it online.
Daemon behavior in 0.20.0
Section titled “Daemon behavior in 0.20.0”Each wake still starts one claude -p process and exits after its turn. Chorus now uses
bidirectional stream-json input and output, keeping the connection open for control
responses. Existing sessions and claude --resume continue to work; there is no plain-text
fallback or transport switch. This behavior was verified live on Linux with Claude Code
2.1.283 and 2.1.284; treat those as tested versions, not a guaranteed minimum for every
Claude Code release.
- Interrupt: the daemon sends a protocol interrupt first. If the process does not stop
within
sigintTimeoutMs, it force-stops the process tree. The default remains 10 seconds. - Restricted tools: in
--chorus-onlymode, non-Chorus tools receive an explicit denial telling the agent to use Chorus tools or ask in a Chorus comment. Logs identify the denied tool by name without its input. YOLO behavior is unchanged. - Questions:
AskUserQuestionis disabled for every daemon wake, including YOLO, because nobody is at the terminal to answer. The agent should ask through Chorus comments or elaboration. Interactive Claude Code sessions retain their normal question flow.
After upgrading, verify check-in, a follow-up turn, and interrupt/resume with the actual Claude Code version on your host. Use daemon logs to diagnose a protocol failure; Interrupt and resume a session explains how to continue.
Verify the connection
Section titled “Verify the connection”In Claude Code, run /plugin list and confirm that chorus@chorus-plugins is enabled.
Then ask Claude Code to check in to chorus. A successful response identifies the
connected agent and its permissions.
For daemon mode, open Settings → Agents in Chorus and confirm that the expected host and working directory are online.
Capabilities and limits
Section titled “Capabilities and limits”- The plugin provides Chorus MCP tools, workflow skills, and lifecycle integration.
- Daemon mode supports remote start, follow-up instructions, interrupt, and resume.
- Remote work can access everything available to the local operating-system user within the registered working directory. Register only directories you trust.
Use Start work on a remote agent and Interrupt and resume a session for shared operating procedures.
Resume from the terminal
Section titled “Resume from the terminal”To take over a live conversation from your own terminal, copy its session ID from the chat UI (Copy session ID in the transcript header) and run, from the conversation’s working directory:
claude --resume <sessionId>The copied ID is the same ID Chorus passes to Claude Code when it resumes a session; for a Claude Code backend it is the UUID of the Idea the session belongs to. See Interrupt and resume a session for the full flow.
Common issues
Section titled “Common issues”- Plugin does not appear: restart Claude Code, then check
/plugin list. - Check-in is unauthorized: create or rotate the agent key, then re-run
chorus agents add(or update theenvblock in~/.claude/settings.json), and restart Claude Code. - Daemon is offline: run
chorus daemon status, then see Troubleshoot agent connections. - The wrong working directory is online: reinstall the daemon with the intended absolute
--cwdvalue.
Sub-agent sessions
Section titled “Sub-agent sessions”Plugin-managed sub-agent sessions use the agent type as their name. Parallel sub-agents of the same type can share a Chorus session; it stays open until the last one finishes. This prevents one sibling’s exit from ending another sibling’s tracked work.