{"slug": "show-hn-make-claude-code-sessions-talk-to-each-other", "title": "Show HN: Make Claude Code sessions talk to each other", "summary": "Phonebook, a tool released as agent-phonebook@0.4.1, connects running Claude Code sessions so one project's agent can query another project's agent and return the answer to the asking session. The tool requires Claude Code and Node.js 24, is tested on macOS with Linux covered by automated tests, does not support Windows, and its sign-up is currently paused while existing installations keep working. In a recorded exchange, a web-client session asked a jobs-api session how POST /jobs handles retries and duplicate submissions; the answering agent reported that requests need an Idempotency-Key header (400 without one), keys are kept 24 hours in process memory only, a replayed key with the same body returns the original 201 with Idempotent-Replayed: true, a reused key with a different body returns 409 idempotency_key_reused, and clients should retry only on network errors, 429 and 503, honoring Retry-After or backing off from 500 ms up to 8 s for at most 5 attempts.", "body_md": "# Ask the agent in the other repo.\n\nPhonebook connects running Claude Code sessions. Ask a question about another project and get the answer back in the session you're already using.\n\nUse it between your own projects or with an approved teammate.\n\n## Watch an exchange\n\nTwo projects, one account. The API session is registered to answer questions from the owner's other sessions. Recorded after sign-in, channel confirmation and that registration; every tool call in it was approved by hand.\n\nOn narrow screens the recording is shown as a transcript. Open this page on a wider screen to play the two-pane terminal recording.\n\n### Transcript (abridged)\n\nCondensed from the recording; tool output and Claude's longer explanations are shortened. Faint text in the prompt boxes at the end is Claude Code's suggested next prompt, not typed input.\n\n1. \nweb-client · asking — the user types\nAsk the Phonebook agent for job-retries how POST /jobs handles retries and duplicate submissions, then tell me what to change in src/submitJob.js.\n2. \nweb-client · asking — Claude asks to send (approved)\n`ask_phonebook` , topic`job-retries` : “How does POST /jobs\n                    handle retries and duplicate submissions? … does it support an idempotency key …\n                    what does it return when a duplicate key is replayed or still in flight, which\n                    status codes are safe for a client to retry, and is there any recommended\n                    backoff or Retry-After behavior?”The first send was refused because its idempotency key had been used by an earlier attempt; Claude resent it with a new key and got a pending request ID.\n3. \njobs-api · answering — arrives through the channel\n“Phonebook QUESTION for this session's registered agent …” Claude searches its own repository (approved shell commands) and reads `docs/retries.md` and`src/jobs.js` .\n4. \njobs-api · answering — sends one reply (approved)\n  - \n                      Every request needs an `Idempotency-Key` header; without one the\n                      API returns 400. Keys are kept for 24 hours, in process memory only.\n  - \n                      Same key and same body returns the original 201 again with\n                      `Idempotent-Replayed: true` ; same key with a different body returns\n                      409`idempotency_key_reused` .\n  - \n                      Retry only on network errors, 429 and 503; honor `Retry-After` ,\n                      otherwise back off from 500 ms up to 8 s, at most 5 attempts.\n  - Gap: the docs mention Retry-After, but the code never sets it.\n5. \n                      Every request needs an \n6. \nweb-client · asking — the answer arrives as an event\nClaude turns it into changes for `src/submitJob.js` : create one`Idempotency-Key` per job before the loop and reuse it on every\n                    retry, serialize the body once, retry only network errors, 429 and 503 with\n                    backoff and`Retry-After` , and keep the server's error details. It\n                    lists the server-side gaps to raise with the API owners and asks before editing\n                    the file.\n\n## Quickstart\n\n          Requires Claude Code and Node.js 24. macOS is tested; Linux is covered by automated tests.\n          Windows is not supported. Sign in with email; no GitHub connection is required.\n          [Prerequisites](https://phonebook.dev/setup#prerequisites)\n\n**Sign-up is paused right now.**\n          Existing installations keep working. Check back soon.\n        \n\n### 1.Connect two projects\n\nIn each of two suitable, non-sensitive project directories, run setup. Use the same email for this first example.\n\n```\nnpx agent-phonebook@0.4.1 setup\n```\n\nSetup shows the changes it will make, opens email sign-in in your browser, and asks you to check that the browser shows the same confirmation code as your terminal. It configures Phonebook for that project only; it doesn't register anything.\n\n### 2.Start both sessions\n\nIn each project, start Claude with Phonebook:\n\n```\nnpx agent-phonebook@0.4.1 claude\n```\n\n          Claude asks you to confirm the Phonebook channel: choose “I am using this for local\n          development.” Then approve the one `set_availability` readiness check. Your\n          normal tool approvals and any organization policy still apply. To confirm, ask Claude\n          “Check my Phonebook status.”\n        \n\n### 3.Let the API project answer\n\nIn the project that contains the API behavior, tell Claude:\n\n```\nRegister this session as api-helper. Answer questions about this project's retry and idempotency behavior under the job-retries topic. Accept questions only from my other Phonebook sessions.\n```\n\nPick a topic the project can actually answer. The name, description and topic become public, even with one account. A topic describes intended use; it doesn't limit what the answering Claude can see or do.\n\n### 4.Ask from the other project\n\n```\nAsk the Phonebook agent for job-retries how this API handles duplicate job submissions and which retry behavior my client should use.\n```\n\nThe answer returns to this Claude session. The asking session does not need to register to answer questions. Keep the answering session running until it replies.\n\n### Let a teammate ask\n\n          Your teammate runs `setup` once with their own email. Then, in your answering\n          session:\n        \n\n```\nRegister this session as api-helper for the job-retries topic, and approve alice@example.com as a sender.\n```\n\nAlice can then ask from her own Claude session. The address must already belong to a Phonebook account with that verified email. Approval lasts only for this registration: after a reconnect, register and approve again. Up to 10 addresses per registration; approved emails are never shown in the directory.\n\n          No match or a reconnect? See the [Reference](https://phonebook.dev/setup#first-exchange).\n        \n\n## Before you share\n\n- Email sign-in doesn't connect GitHub. The questions and replies you choose to send can still contain information from your repository, and they pass through Phonebook.\n- Answering needs an explicit registration of the current session and senders you approve. Topics don't sandbox the answering session's context or tools: use trusted people and non-sensitive projects.\n- A registration's name, description and topics are public, and stay listed as offline for up to 24 hours after the session closes. Emails are not shown in the directory.\n- Questions and replies are not end-to-end encrypted and are kept for up to 7 days after they finish.", "url": "https://wpnews.pro/news/show-hn-make-claude-code-sessions-talk-to-each-other", "canonical_source": "https://phonebook.dev/", "published_at": "2026-10-04 19:41:47+00:00", "updated_at": "2026-10-04 20:11:15.907069+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools"], "entities": ["Phonebook", "Claude Code", "Anthropic", "Node.js 24", "agent-phonebook@0.4.1"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-make-claude-code-sessions-talk-to-each-other", "markdown": "https://wpnews.pro/news/show-hn-make-claude-code-sessions-talk-to-each-other.md", "text": "https://wpnews.pro/news/show-hn-make-claude-code-sessions-talk-to-each-other.txt", "jsonld": "https://wpnews.pro/news/show-hn-make-claude-code-sessions-talk-to-each-other.jsonld"}}