콘텐츠로 이동

Chorus 데몬 운영

포그라운드 데몬 연결을 확인한 뒤에 이 가이드를 사용하세요. 명령은 지원되는 상주 백엔드, 즉 Claude Code, Codex, Kiro, Pi에 적용됩니다.

Hermes는 Chorus daemon 대신 자체 게이트웨이로 온라인 상태를 유지합니다. 댓글 승인과 중단/재개를 지원하지만 조사 및 아이디어 생성 전용 작업 턴은 실행하지 않습니다.

데몬 백엔드를 0.20.0으로 업그레이드

섹션 제목: “데몬 백엔드를 0.20.0으로 업그레이드”

업데이트 명령으로 Chorus CLI를 갱신하고 진행 중인 작업에 지장이 없을 때 데몬을 재시작하세요. 호스트 CLI는 별도로 업데이트합니다. 데몬이 처음 작업을 시작하기 전에 백엔드별 요구사항을 확인하세요.

  • Codex App Server: codex-cli 0.157.1로 검증했습니다. 데몬 args는 모델 옵션과 허용된 설정만 받습니다. --chorus-only에서는 필요한 MCP 도구 허용을 Codex 설정에서 확인하세요.
  • Claude Code stream-json: Claude Code 2.1.283 및 2.1.284로 검증했습니다. 중단할 때는 먼저 프로토콜 수준의 중단을 사용하며, 백그라운드에서 생긴 질문은 반드시 Chorus 댓글이나 요구사항 구체화로 처리해야 합니다.
  • Pi RPC: Pi 0.85.0 이상이 필요합니다(0.85.1로 검증). --plugins는 Chorus 패키지를 갱신하지만 Pi 자체는 업그레이드하지 않습니다.

데몬이 접근할 수 있는 범위 정하기

섹션 제목: “데몬이 접근할 수 있는 범위 정하기”

각 --cwd는 하나의 작업 디렉터리를 Chorus에서 별개의 대상으로 등록합니다.

Terminal window
chorus daemon \
--agent claude-code \
--cwd ~/work/project-a \
--cwd ~/work/project-b \
--chorus-only

--cwd가 없으면 Chorus는 명령을 시작한 디렉터리를 사용합니다. 반복 지정할 수 있는 --browse-root 옵션은 사용자가 더 넓은 루트 아래에서 디렉터리를 골라야 할 때만 사용하세요. browse root는 탐색을 허용할 뿐, 그 아래의 모든 디렉터리를 온라인 연결로 등록하지는 않습니다.

프로젝트의 에이전트에 대해 작업 디렉터리를 고정할 때, 그 경로는 이 데몬이 제공하는 디렉터리여야 합니다. 경로를 이 데몬의 cwds 집합에 포함해 고정된 디렉터리가 온라인 연결로 연결되게 하세요.

데몬은 설정을 ~/.chorus/daemon.json에서 읽습니다. 일반적인 단일 에이전트 구성에서는 에이전트 인증 정보와 런타임 옵션을 함께 담은 평면 JSON 객체 하나입니다. 하나의 데몬으로 여러 에이전트를 서비스하려면 대신 agents 배열에 에이전트를 나열합니다(하나의 데몬에서 여러 에이전트 실행하기 참조). 어느 형식이든 파일은 0600(소유자만 읽기/쓰기) 권한으로 원자적으로 기록되므로, 쓰기 도중 크래시가 나도 잘린 파일이 남지 않습니다. 다른 파일을 사용하려면 CHORUS_DAEMON_CONFIG_PATH를 설정하세요. 이 경우 CLI와 데몬 서비스에 같은 값을 설정해야 합니다. 셸에서 export해도 이미 실행 중인 서비스에는 반영되지 않습니다.

필드타입의미
urlstringChorus 서버 URL.
apiKeystring에이전트 API 키(cho_…).
agentUuidstring인증된 에이전트 UUID(참고용).
agentNamestring인증된 에이전트 이름(참고용).
cwdsstring[]이 데몬이 제공하는 작업 디렉터리. 각 경로는 하나의 독립된 온라인 연결입니다.
browseRootsstring[]원격 작업 디렉터리 탐색에 노출하는 루트. browse root는 연결을 만들지 않습니다.
agentstring깨울 로컬 백엔드: "claude-code", "codex", "kiro", "pi", "dsh".
sigintTimeoutMsnumber중단 후 강제 종료까지의 유예 시간(밀리초). Claude Code, Codex, Pi는 먼저 프로토콜 중단을 보냅니다. 기본값 10000.
agentsobject[]선택. 하나의 데몬으로 여러 독립 에이전트를 서비스합니다. 각 항목은 공유 런타임 기본값을 재정의할 수 있지만 args와 env는 상속되지 않습니다. 하나의 데몬에서 여러 에이전트 실행하기 참조.

chorus login과 chorus daemon install을 실행한 직후의 최소 파일입니다.

{
"url": "https://chorus.example.com",
"apiKey": "cho_REDACTED",
"agentUuid": "8a1c…",
"agentName": "Build Agent",
"cwds": ["/home/demo/work/project-a"],
"browseRoots": ["/home/demo/work"],
"agent": "claude-code",
"sigintTimeoutMs": 10000
}
  • 보통은 chorus agents add가 이 파일을 처음 만듭니다. 구성된 각 에이전트의 인증 정보를 검증하고 agents 배열의 항목으로 씁니다. 에이전트 런타임 연결을 참고하세요.
  • chorus login은 URL과 키를 검증한 뒤, 단일 평면 에이전트에 대해 url, apiKey, agentUuid, agentName을 씁니다.
  • chorus daemon install은 추가로 cwds, browseRoots, agent를 씁니다(아직 설정되지 않았다면 제공할 디렉터리와 백엔드를 묻습니다).
  • 터미널에서 chorus daemon을 처음 실행하면 빠진 인증 정보를 대화형으로 입력받아 기록합니다.

파일에 쓰는 모든 명령은 얕은 병합을 수행합니다. 새 필드는 디스크에 이미 있는 내용 위에 병합되고, 관련 없는 필드는 그대로 유지됩니다. chorus login을 다시 실행하면 cwds, agent, sigintTimeoutMs를 지우지 않고 인증 정보만 새로 고칩니다. chorus daemon install을 다시 실행하면 인증 정보를 버리지 않고 제공하는 집합을 갱신합니다. 파일이 없거나 손상되면 빈 객체로 취급되므로, 다시 로그인하면 실패하지 않고 항상 유효한 파일이 만들어집니다.

아래 런타임 옵션은 세 가지 방법으로 줄 수 있습니다. 우선순위는 플래그, 그다음 환경 변수, 마지막이 daemon.json이므로, 일회성 플래그나 환경 변수 재정의를 파일에 쓸 필요가 없습니다.

대상daemon.json 필드CLI 플래그환경 변수
서버 URLurl--urlCHORUS_URL
API 키apiKey--api-keyCHORUS_API_KEY
작업 디렉터리cwds--cwd(반복 가능)CHORUS_DAEMON_CWDS
browse rootbrowseRoots--browse-root(반복 가능)CHORUS_DAEMON_BROWSE_ROOTS
백엔드agent--agentCHORUS_AGENT
SIGINT 유예sigintTimeoutMs--sigint-timeoutCHORUS_DAEMON_SIGINT_TIMEOUT
권한 모드(저장되지 않음)--yolo / --chorus-onlyCHORUS_YOLO / CHORUS_CHORUS_ONLY

권한 모드는 의도적으로 daemon.json에 저장되지 않습니다. 시작할 때 --chorus-only를 전달하거나 CHORUS_CHORUS_ONLY=1을 설정하세요. 설치된 서비스는 --chorus-only를 파일이 아니라 그 유닛에 담습니다.

하나의 데몬에서 여러 에이전트 실행하기

섹션 제목: “하나의 데몬에서 여러 에이전트 실행하기”

하나의 chorus daemon 프로세스는 여러 개의 완전히 독립된 에이전트를 동시에 서비스할 수 있습니다. 페르소나, 권한, 계정, 심지어 백엔드가 서로 달라도 되므로 에이전트마다 별도의 데몬을 돌릴 필요가 없습니다. 에이전트를 agents 배열에 나열하며, 각 항목이 하나의 에이전트입니다.

{
"url": "https://chorus.example.com",
"sigintTimeoutMs": 8000,
"agents": [
{ "apiKey": "cho_alpha", "agentType": "claude-code", "cwds": ["/home/demo/project-a"] },
{ "apiKey": "cho_beta", "agentType": "kiro", "cwds": ["/home/demo/project-b"], "permissionMode": "chorus" }
]
}

url, sigintTimeoutMs 같은 공유 런타임 설정이 기본값을 제공하며, 에이전트 자체 값으로 재정의할 수 있습니다. args와 env는 에이전트별 설정이며 공유 기본값이 아닙니다. 각 에이전트는 고유한 신원(키로 결정), 고유한 연결(cwds마다 하나), 고유한 깨우기 큐, 고유한 백엔드를 가집니다. 따라서 에이전트마다 독립적으로 깨어나 실행되며, 한 에이전트가 실패해도 다른 에이전트에는 영향이 없습니다. 서버에서는 각 에이전트가 에이전트·호스트·디렉터리 단위로 구분되어 설정 → 에이전트(Settings → Agents)에 별도의 연결로 표시됩니다. 여러 에이전트가 같은 작업 디렉터리를 공유할 수도 있지만 데몬이 작업을 직렬화하지 않으므로, 하나의 git 트리 안에서 서로 충돌하는 작업을 동시에 하지 마세요(별도의 브랜치나 worktree를 사용하세요).

필드의미
apiKey(필수)에이전트의 cho_ 키. 이 키로 에이전트의 신원이 정해집니다.
urlChorus 서버(에이전트마다 다를 수 있음 — 다른 서버나 워크스페이스).
agentTypeclaude-code, codex, kiro, pi(백엔드는 혼합 가능).
cwds이 에이전트가 제공하는 작업 디렉터리(각각 하나의 연결).
permissionModeyolo 또는 chorus.
maxConcurrency이 에이전트 자신의 깨우기 동시 실행 상한(기본값 4).
sigintTimeoutMs중단 후 강제 종료까지의 유예 시간(밀리초).
browseRoots디렉터리 탐색 허용 목록.
args백엔드 CLI에 전달할 추가 인수의 문자열 배열(선택). 기본값 []. 에이전트의 모델, 사고 수준, 환경 변수 설정하기를 참고하세요.
env환경 변수 이름을 문자열 값에 매핑하는 객체(선택). 기본값 {}.

에이전트의 모델, 사고 수준, 환경 변수 설정하기

섹션 제목: “에이전트의 모델, 사고 수준, 환경 변수 설정하기”

~/.chorus/daemon.json의 대상 항목에 필드를 추가하세요. 이 Pi 예제는 예시용 인증 정보와 민감하지 않은 환경 변수 값을 사용합니다. URL, 키, 모델은 사용 환경에 맞는 값으로 바꾸고, 다른 에이전트를 덮어쓰지 않도록 기존 파일에 병합하세요.

{
"url": "https://chorus.example.com",
"agents": [
{
"agentName": "pi-worker",
"apiKey": "cho_REDACTED",
"agentType": "pi",
"args": ["--model", "anthropic/claude-sonnet-4-6", "--thinking", "high"],
"env": { "PROVIDER_REGION": "us-east-1" }
}
]
}

모델은 예시이며 Chorus 기본값이 아닙니다. 백엔드가 지원하는 플래그와 값을 사용하세요. 별도의 model이나 thinking 필드는 없습니다. 데몬의 깨우기와 chorus agents run --name pi-worker 모두 이 항목을 사용합니다. offline 에이전트는 이 경우에도 깨울 수 없습니다.

  • 전역 상속 없음: 비어 있지 않은 agents 배열이 있으면 최상위 args 또는 env는 오류가 됩니다. 해당하는 각 항목으로 옮기세요. 다른 에이전트나 셸에는 영향이 없습니다.
  • 값 그대로 전달: args의 각 요소는 인수 하나이며, 셸용 따옴표를 따로 붙이지 않습니다. $HOME, ${TOKEN}, 셸 명령은 확장되지 않습니다. Chorus는 dotenv 로딩, 보간, 비밀 조회 또는 env 값의 특별 처리를 추가하지 않습니다. env는 자식 프로세스가 상속한 환경을 덮어쓰지만, Chorus가 관리하는 제어 항목이 여전히 우선합니다. 환경 변수 이름은 Windows에서는 대소문자를 구분하지 않고 POSIX에서는 구분합니다.
  • 검증: null, 문자열이 아닌 인수나 값, NUL 문자, [A-Za-z_][A-Za-z0-9_]*에 맞지 않는 변수 이름은 실행 전에 거부됩니다. 빈 문자열 값은 유효합니다. 위치 인수로 된 프롬프트나 하위 명령 대신 옵션을 사용하세요. 알 수 없는 옵션은 백엔드가 지원한다면 "--future=value" 형식으로 쓰세요. "--future", "value"는 모호하므로 거부됩니다.
  • 보호된 제어 항목: 영구 인수는 알려진 세션/재개, 프롬프트, 전송/출력, 작업 디렉터리, 관리형 MCP, 권한 제어를 변경할 수 없습니다. 도움말/버전처럼 정보만 출력하고 종료하는 옵션, 단독 --, 표준 입력 표시자 -도 금지됩니다. 모든 CHORUS_* 환경 변수 이름과 중첩 Claude 컨텍스트 이름 CLAUDECODE / CLAUDE_CODE_ENTRYPOINT는 대소문자와 무관하게 예약되어 있습니다. 이를 설정하면 조용히 무시되지 않고 오류가 발생합니다. 대신 전용 Chorus 설정이나 명시적인 포그라운드 패스스루를 사용하세요.
  • Windows 명령 래퍼: .cmd/.bat 실행은 구성된 빈 인수와 공백, 따옴표, 명령 메타 문자가 포함된 인수를 거부합니다. 이런 값에는 네이티브 실행 파일을 사용하세요. 래퍼를 거치는 명시적 포그라운드 패스스루는 셸에서 안전하다고 보장되지 않습니다.

Env에는 평문 제공자 인증 정보가 들어갈 수 있습니다. 파일을 보호하고(POSIX에서 chmod 600 ~/.chorus/daemon.json) 비밀을 커밋하지 마세요. Chorus는 검증/실행 메시지에 구성 값을 표시하지 않지만, 자식 프로그램이나 OS 수준의 검사로 노출될 수 있습니다. 암호화나 비밀 저장소(vault) 기능은 없습니다. CODEX_HOME이나 PI_CODING_AGENT_DIR 같은 사용자 지정 홈을 설정하면 그곳에도 Chorus 통합을 구성하세요.

변경 적용: chorus daemon restart를 실행하세요. 데몬은 이 설정을 시작할 때 읽으며, 깨울 때마다 다시 읽지는 않습니다. 파일을 편집해도 실행 중인 자식 프로세스는 바뀌지 않고, 재시작하기 전까지는 이후의 깨우기에도 이전 설정이 사용됩니다. 새로 실행하는 chorus agents run은 매번 프로필을 다시 읽지만, 이미 실행 중인 자식 프로세스에는 영향을 주지 않습니다. args/env를 제거하면 사용자 지정 전 동작으로 돌아갑니다.

기존 평면 파일: 비어 있지 않은 agents 배열이 없으면 최상위 args/env는 단일 데몬 에이전트에 적용됩니다. 포그라운드에서 에이전트를 선택하려면 agents[]가 필요합니다. 설정을 공유하려면 평면 URL, 키, 식별 정보, args, env를 항목으로 옮기고 agent를 agentType으로 바꾸세요. chorus agents add 또는 chorus login --add로 에이전트를 추가할 때도 기존 평면 인증 정보 프로필과 args/env가 agents[0]로 옮겨지고 해당 최상위 키는 제거됩니다. 키가 없는 불완전한 평면 프로필은 먼저 완성하거나 수동으로 변환해야 합니다.

일회성 재정의와 하위 명령의 정확한 규칙은 CLI 참고 문서를 확인하세요.

  • chorus login --add 명령은 새 키를 검증하고 다른 에이전트로 추가합니다. 평면 파일에서 처음 --add를 사용하면 기존 인증 정보를 agents[0]로 옮기고 새 키를 agents[1]로 추가합니다. 중복된 키는 거부되며, 기존 에이전트를 덮어쓰지 않습니다.
  • chorus daemon install --add 명령은 설치 마법사를 반복 실행하여 한 번에 여러 에이전트를 추가할 수 있습니다(터미널만).
  • ~/.chorus/daemon.json을 직접 편집하는 방법도 항상 지원됩니다.

파일을 편집한 뒤에는 데몬을 재시작하고(chorus daemon restart), 설정 → 에이전트(Settings → Agents)에서 각 에이전트가 나타나는지 확인하세요.

각 백엔드는 자신의 키를 어떻게 받는가

섹션 제목: “각 백엔드는 자신의 키를 어떻게 받는가”

각 에이전트는 자신의 키로 인증하지만, 그 키가 깨어난 하위 프로세스에 어떻게 전달되는지는 백엔드에 따라 다릅니다.

  • Claude Code — 자동. 데몬이 깨울 때마다 해당 에이전트의 URL과 키를 담은 MCP 설정을 작성합니다. 따로 구성할 것은 없습니다.
  • Kiro — 환경 변수를 통해 자동. 설치된 mcp.json은 ${CHORUS_URL}과 ${env:CHORUS_API_KEY}를 참조하고, 데몬이 깨울 때마다 이를 내보내므로, 각 Kiro 에이전트는 자신의 키로 인증합니다.
  • Codex — 환경 변수를 통해 자동. chorus agents add는 Codex 설정 파일에 키를 저장하지 않는 방식으로 Codex를 구성합니다. CHORUS_URL / CHORUS_API_KEY / CHORUS_AGENT_PROFILE를 ~/.codex/.env(Codex가 시작할 때 로드함)에 쓰고 config.toml에 bearer_token_env_var = "CHORUS_API_KEY"를 설정하므로, Codex는 파일에 기록된 키가 아니라 환경 변수에서 키를 읽습니다. 데몬이 깨울 때마다 각 에이전트의 키를 주입하므로, 하나의 데몬에 있는 여러 Codex 에이전트가 각자 자신의 신원으로 인증합니다.
  • Pi — 환경 변수를 통해 자동. 데몬은 깨울 때마다 각 에이전트의 CHORUS_URL / CHORUS_API_KEY / CHORUS_AGENT_PROFILE를 깨운 Pi 세션으로 내보내고 chorus-pi 확장이 이를 읽으므로, 각 Pi 에이전트는 자신의 키로 인증합니다.

Linux에서는 확인된 구성을 사용자 서비스로 설치합니다.

Terminal window
chorus daemon install \
--agent claude-code \
--cwd ~/work/project-a \
--chorus-only

설치 프로그램은 서비스를 즉시 시작하고, 사용자가 로그인할 때 시작되도록 구성합니다. 서비스가 저장된 인증 정보를 읽을 수 있도록 먼저 chorus agents add(또는 chorus login)를 실행하세요. 또는 chorus agents add에 --daemon-autostart를 전달하면 같은 단계에서 이 서비스를 설치할 수 있습니다.

깨운 에이전트에 필요한 인증 정보 제공하기

섹션 제목: “깨운 에이전트에 필요한 인증 정보 제공하기”

데몬은 Chorus 연결(CHORUS_URL, CHORUS_API_KEY, CHORUS_AGENT_PROFILE)을 제공하지만 모델 제공자 인증 정보는 제공하지 않습니다. 백엔드가 환경 변수에서 제공자 인증 정보를 읽는다면 해당 에이전트의 env나 데몬이 상속하는 환경으로 제공하세요. systemd --user 서비스는 로그인 셸에서 내보낸 변수를 상속하지 않습니다. 서비스를 통해 제공하려면 드롭인 파일로 설정한 뒤 재시작하세요.

~/.config/systemd/user/chorus-daemon.service.d/provider-env.conf
[Service]
Environment=EXAMPLE_PROVIDER_API_KEY=…
Terminal window
systemctl --user daemon-reload && systemctl --user restart chorus-daemon

제공자 인증을 파일에서 읽는 백엔드(예: ~/.claude / ~/.codex 아래의 Claude Code와 Codex)는 데몬의 HOME만 올바르게 설정되면 되며, 설치된 유닛이 이미 이렇게 설정합니다.

일상적인 운영에는 다음 명령을 사용합니다.

Terminal window
chorus daemon status
chorus daemon logs
chorus daemon restart
chorus daemon stop
chorus daemon uninstall

인증 정보, 작업 디렉터리, 백엔드, 권한 모드를 바꾼 뒤에는 서비스를 다시 설치하거나 재시작하고, 설정 → 에이전트(Settings → Agents)에서 연결을 확인하세요.

로그아웃 후에도 Linux 데몬 유지

섹션 제목: “로그아웃 후에도 Linux 데몬 유지”

Chorus 0.21.0부터 chorus daemon install은 현재 사용자의 systemd lingering 활성화를 시도합니다. 마지막 로그아웃 후에도 사용자 서비스를 유지하고 로그인 없이 부팅 시 시작하기 위한 설정입니다. 권한 확인은 비대화형이며 시간 제한이 있어 비밀번호 대화 상자를 기다리지 않습니다.

권한이 거부되거나 logind를 사용할 수 없어도 서비스 설치는 성공할 수 있지만, 로그아웃 후나 부팅 시 실행을 보장할 수 없다는 경고를 표시합니다. chorus daemon status에서 linger: yes를 확인하세요. 호스트 정책이 허용한다면 관리자에게 출력된 sudo loginctl enable-linger <user> 명령 실행을 요청하세요.

기존 호스트는 chorus daemon install을 다시 실행해 복구할 수 있습니다. chorus agents add도 서비스 설치 시 또는 기존 서비스 발견 시 lingering을 확인하며, --daemon-autostart가 없거나 자동 시작을 거부해도 확인합니다. 두 명령 모두 --no-linger로 시도를 건너뛸 수 있지만 기존 설정을 끄지는 않습니다. lingering이 없으면 로그아웃 후 데몬이 멈추고 다음 로그인까지 시작하지 않을 수 있습니다. 다른 사용자 서비스가 필요로 할 수 있어 Chorus 서비스를 제거해도 lingering은 유지됩니다.

수명이 짧은 연결이라면 chorus daemon을 포그라운드에서 실행합니다. 분리(detached) 모드도 사용할 수 있습니다.

Terminal window
chorus daemon -d --agent codex --cwd ~/work/project-a --chorus-only

같은 status, logs, restart, stop 명령으로 관리합니다. 분리 모드를 별도로 작성한 프로세스 관리자와 함께 쓰지 마세요.

명령줄과 웹의 상태를 모두 확인합니다.

  1. chorus daemon status를 실행합니다.
  2. chorus daemon logs로 최근 출력을 확인합니다.
  3. 설정 → 에이전트(Settings → Agents)에서 기대하는 각 작업 디렉터리가 온라인(Online)인지 확인합니다.
  4. 작은 테스트 세션을 시작해 의도한 디렉터리를 대상으로 하는지 확인합니다.

로그에는 경로, 프롬프트, 명령 출력이 담길 수 있습니다. 공유하기 전에 민감한 값을 제거하세요. 실패한 경우 에이전트 연결 문제 해결로 이어 가세요.

Claude 백그라운드 대기 상한(0.22.0)

섹션 제목: “Claude 백그라운드 대기 상한(0.22.0)”

Claude daemon 실행은 미완료 자식 에이전트를 주 턴 종료 후 기본 60분 동안 기다립니다. 이는 턴 이후 대기 상한이며 전체 실행 시간 제한이나 중단 후 유예 시간이 아닙니다. 대화형 Claude 세션은 바뀌지 않습니다. Chorus CLI와 Claude 플러그인을 업데이트하고 daemon을 다시 시작하세요.

  • CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS: Claude 네이티브 값. 명시하면 0과 빈 문자열도 그대로 전달하며 가장 우선합니다.
  • CHORUS_CLAUDE_BG_WAIT_CEILING_MS: 네이티브 변수가 없을 때만 사용합니다. 밀리초 단위의 음이 아닌 안전한 정수이며 양끝 공백을 제거합니다.
  • 기본값: 네이티브 변수가 없고 Chorus 값이 미설정 또는 잘못되었으면 3600000 ms(60분). 비어 있지 않은 잘못된 Chorus 값은 경고하며 빈 값이나 공백만 있으면 기본값을 사용합니다.

우선순위는 네이티브 → Chorus → 3600000입니다. 명시적 0은 무기한 대기를 요청하므로 멈춘 자식 때문에 실행이 끝나지 않을 수 있습니다. 빈 네이티브 값도 그대로 전달하므로 기본값을 요청하는 용도로 사용하지 마세요. Claude가 미설정으로 해석하여 자체의 더 짧은 제한으로 돌아갈 수 있습니다. Chorus 값을 사용하려면 네이티브 변수를 완전히 제거하세요. 네이티브 값의 검증과 해석은 Claude가 담당합니다.

~/.chorus/daemon.json의 대상 에이전트 env에 설정합니다.

{
"env": {
"CHORUS_CLAUDE_BG_WAIT_CEILING_MS": "3600000"
}
}

daemon 서비스의 환경에도 설정할 수 있습니다. 로그인 셸의 export는 이미 실행 중인 서비스에 전달되지 않습니다. chorus daemon restart로 다시 시작하고 상속한 네이티브 값이 우선하는지 확인하세요.

부모는 자식의 완료 결과를 수집하거나 명시적으로 중지한 뒤 턴을 끝내야 합니다. 상한 연장은 이 책임을 대신하지 않습니다. Claude가 Background tasks still running after …s; terminating.을 보고하면 실제 종료 코드가 0이어도 비정상 실행으로 기록하고 시작점인 아이디어나 작업에 설명 댓글을 게시하려고 합니다. 명시적 중단이나 종료는 충돌이 아니라 중단으로 유지됩니다. 작업 상태 자동 복구나 새 자동 재시도는 없습니다. 재개 전 부분 결과를 확인하세요. 댓글 게시에 실패해도 실행 진단에 오류가 남습니다.

백엔드 제한을 혼동하지 마세요. CHORUS_DSH_TIMEOUT_MS는 전체 dsh 실행을 제한하며 기본값은 1800000 ms(30분)입니다. 양의 안전한 정수만 허용하고 0이나 잘못된 값은 무제한이 아니라 기본값으로 돌아갑니다. Claude의 턴 이후 대기 설정은 Codex, Pi, Kiro, Hermes에 적용되지 않습니다. 다른 런타임의 자식 에이전트 수명을 Claude 동작으로 추정하지 마세요.