[BUG] Remote Control server mode: Session creation fails with 400 "Extra inputs are not permitted"

Resolved 💬 2 comments Opened Apr 9, 2026 by mottemorn Closed May 22, 2026

Bug Description

Remote Control in server mode (claude remote-control --spawn worktree) fails to create sessions. The environment registers successfully (HTTP 200), but session creation immediately fails with:

[bridge] Session creation failed with status 400: source: Extra inputs are not permitted

Additionally, no WebSocket connection to session_ingress is established — only HTTP polling (at 10-minute intervals). This means even if the 400 error is bypassed with --no-create-session-in-dir, new sessions spawned from the browser never reach the local process in a timely manner.

Environment

  • Claude Code version: 2.1.98 (also reproduced on 2.1.92)
  • OS: Ubuntu 24.04 LTS, Linux 6.8.0-1047-oracle (aarch64, Oracle Cloud ARM A1)
  • Plan: Max
  • Mode: claude remote-control --spawn worktree --name "name" --verbose
  • Running as: systemd service

Steps to Reproduce

  1. Run claude remote-control --spawn worktree --debug-file /tmp/rc-debug.log --verbose
  2. Environment registers successfully:

``
[bridge:api] POST /v1/environments/bridge -> 200 environment_id=env_XXXX
``

  1. Session creation fails immediately:

``
[bridge] Session creation failed with status 400: source: Extra inputs are not permitted
``

  1. Poll loop starts but only one HTTP poll occurs, then switches to 10-minute interval
  2. No WebSocket (session_ingress/ws/) connection is established (verified via ss -tnp — only 1 socket)
  3. Open https://claude.ai/code?environment=env_XXXX in browser → create new session → Claude never responds
  4. Debug log shows GET .../work/poll -> 200 (no work) indefinitely — spawn command never arrives

Workaround Attempted

  • --no-create-session-in-dir eliminates the 400 error but does NOT fix the issue — new sessions from the browser still don't spawn because the WebSocket transport is never established.

Debug Log Evidence

[bridge:init] bridgeId=XXXX dir=/home/ubuntu/workspace branch=main
[bridge:api] POST /v1/environments/bridge -> 200 environment_id=env_XXXX
[bridge:api] >>> {"machine_name":"instance-XXXX","directory":"/home/ubuntu/workspace","branch":"main","git_repo_url":"https://github.com/XXXX/workspace.git","max_sessions":32,"metadata":{"worker_type":"claude_code"}}
[bridge] Session creation failed with status 400: source: Extra inputs are not permitted
[bridge:work] Starting poll loop spawnMode=worktree maxSessions=32 environmentId=env_XXXX
[bridge:api] GET .../work/poll -> 200 (no work, 1 consecutive empty polls)

Two Distinct Issues

  1. Session creation API returns 400 — the request payload from v2.1.98 contains fields the server rejects ("Extra inputs are not permitted")
  2. No WebSocket transport — only HTTP polling is active (1 socket via ss -tnp), so real-time spawn commands from the browser never reach the local process

Impact

This completely breaks the claude remote-control --spawn worktree server mode. No new sessions can be created from the browser. Previously established sessions continue to work (their processes are already running), but no new ones can be spawned.

Related Issues

  • #32746 — BridgeFatalError: Environment not found
  • #32982 — Server TTL ignores keepalives
  • #41979 — "Failure to load session" on Max plan
  • #28758 — Session not connecting from mobile app

View original on GitHub ↗

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