원클릭으로
daemon-troubleshooting
Use when daemon notifications, worker command ingest, session routes, or local injection behavior are failing
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when daemon notifications, worker command ingest, session routes, or local injection behavior are failing
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when deploying pigeon code changes across all machines after merging to main
Use when you need to understand worker architecture, endpoint flow, and command routing behavior before making changes
Use when you need to understand daemon route flow, storage model, worker connectivity, and command injection architecture before making changes
Use when you need to understand the OpenCode plugin event lifecycle, session state transitions, and daemon API contracts
Use when developing or refactoring OpenCode plugin handlers, tests, and daemon integration payloads
Use when you need to understand the swarm IPC subsystem — tables, routes, the per-target arbiter, the session→directory registry, and the wire envelope — before changing it
| name | daemon-troubleshooting |
| description | Use when daemon notifications, worker command ingest, session routes, or local injection behavior are failing |
Use this when daemon behavior regresses in production or parity tests.
/session-start, /stop, /sessions).systemctl status pigeon-daemon.service --no-pager
journalctl -u pigeon-daemon.service -n 120 --no-pager
curl -s http://127.0.0.1:4731/health
CCR_API_KEY, CCR_WORKER_URL, or CCR_MACHINE_IDbackend_endpoint on session)inbox status transitions and ack handlingonQuestionReply must use the SDK client's in-process fetch, not globalThis.fetch. In TUI mode, no HTTP server listens on ctx.serverUrl (localhost:4096). See opencode-plugin-architecture skill for the internalFetch pattern.internalFetch is extracted from (ctx.client as any)._client?.getConfig?.().fetch.callback_data, not generate its own. Check extractTokenFromCallbackData() in packages/worker/src/notifications.ts.pending_questions row was already deleted.pending_questions table TTL (4h). Old questions are evicted./question-asked was called (daemon has no HTTP request logging by default; add temporary logging if needed).opencode-serve.service is down or unhealthy. Check: systemctl status opencode-serve.service and curl http://127.0.0.1:4096/global/health.journalctl -u opencode-serve.service -n 50.ls -la ~/.config/opencode/plugins/opencode-pigeon.ts./kill returns "Session not found" from worker
/sessions/register after late discovery. If /kill is sent immediately after /launch, there may be a race condition -- retry after a few seconds.nvim_socket is set on session:
curl -s http://127.0.0.1:4731/sessions | jq '.[] | {id, nvim_socket}'
nvim --server /tmp/nvim.sock --remote-expr "luaeval('require(\"pigeon\").list()')"
Should return registered PTY instances. Empty/error means plugin not loaded.list() call above shows registered instances. If empty, the Claude session didn't register its PTY."nvim RPC timed out" — nvim process unresponsive or socket stale"instance not found" — session PTY not registered in pigeon.lua; check hook ran after nvim loaded pluginUse parity harness for full-path validation:
cd ~/projects/pigeon
npm run --workspace @pigeon/daemon parity:harness