[BUG] Remote Control server mode: Session creation fails with 400 "Extra inputs are not permitted"
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
- Run
claude remote-control --spawn worktree --debug-file /tmp/rc-debug.log --verbose - Environment registers successfully:
````
[bridge:api] POST /v1/environments/bridge -> 200 environment_id=env_XXXX
- Session creation fails immediately:
````
[bridge] Session creation failed with status 400: source: Extra inputs are not permitted
- Poll loop starts but only one HTTP poll occurs, then switches to 10-minute interval
- No WebSocket (
session_ingress/ws/) connection is established (verified viass -tnp— only 1 socket) - Open
https://claude.ai/code?environment=env_XXXXin browser → create new session → Claude never responds - Debug log shows
GET .../work/poll -> 200 (no work)indefinitely — spawn command never arrives
Workaround Attempted
--no-create-session-in-direliminates 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
- Session creation API returns 400 — the request payload from v2.1.98 contains fields the server rejects ("Extra inputs are not permitted")
- 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
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗