HTTP hooks silently fail in second+ concurrent sessions (report success, never send request)

Resolved 💬 2 comments Opened Mar 5, 2026 by tdodd777 Closed Mar 6, 2026

Environment

  • Claude Code version: 2.1.69
  • OS: macOS (Darwin 25.3.0, arm64)
  • Shell: zsh
  • IDE: VS Code

Description

When multiple Claude Code sessions are active in the same project, HTTP hooks in the second (and subsequent) sessions report "success" client-side but never actually send HTTP requests to the server. The first session after a VS Code restart works perfectly — all hooks fire and reach the server.

Steps to reproduce

  1. Run a local HTTP server that logs incoming requests and writes to a database
  2. Configure HTTP hooks in ~/.claude/settings.json for UserPromptSubmit, PreToolUse, PostToolUse, etc.
  3. Force quit VS Code, relaunch it
  4. Open a Claude Code session (Session A) — hooks work correctly, all HTTP requests arrive at the server
  5. Open a second Claude Code session (Session B) in the same project
  6. In Session B, submit a prompt and use a tool (e.g., Read a file)

Expected behavior

Both sessions send HTTP requests for all configured hook events.

Actual behavior

  • Session A: All hooks fire correctly — UserPromptSubmit, PreToolUse, PostToolUse requests all arrive at the server with correct payloads.
  • Session B:
  • SessionStart fires correctly (session row created in DB via the HTTP request)
  • UserPromptSubmit — system reminder shows "hook success: Success" but no HTTP request reaches the server (zero rows in DB)
  • PreToolUse / PostToolUseno HTTP requests reach the server despite tools being used successfully
  • No other hook events arrive

Evidence

The server is confirmed healthy:

  • Direct curl to all endpoints returns correct responses
  • All 22 pytest tests pass
  • /health endpoint shows server is running
  • Session A's hooks continue working throughout

The database shows Session B has a sessions row (from SessionStart) but zero tool_events rows — even though UserPromptSubmit should create one and the client reports success.

Additional context

  • This is not the same as #30170 (SessionStart HTTP hooks not firing). In our case, SessionStart is the one that works — everything else fails.
  • Killing all Claude instances, waiting, and restarting produces a working first session but the bug reappears on the second concurrent session.
  • Observed with hooks configured only in global ~/.claude/settings.json (project settings empty {}).
  • The bug may have first appeared after editing .claude/settings.json while a session was active, but it persists across full restarts now.

Workaround

Only use one Claude Code session per project at a time. Force quit and restart VS Code to reset.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗