anthropics / anthropics/claude-agent-sdk-python
Feature request: configurable API response timeout for subagent calls
- Dominant language
- Python
- Stars
- 8.1k
- Forks
- 1.3k
- Avg merge
- 2d 31m
- Merged PRs (30d)
- 1
Description
## Summary
When a subagent makes an API call with large context (~83K tokens) and needs to generate large output (~30KB), the API call can hang indefinitely with zero events written to the JSONL transcript. There is no configurable timeout to detect or recover from this state.
## Reproduction
1. Launch a background agent (`run_in_background=True`) with a task requiring large context
2. Agent accumulates ~80K+ tokens of context via multiple Read calls
3. Agent makes a tool call that succeeds (e.g., `mkdir`)
4. Next API call (to generate a large Write) hangs — zero JSONL events for 4+ minutes
5. Parent agent polls via TaskOutput — always sees `status: running`
6. No mechanism to detect the hang or kill the subagent
## Observed behavior
- JSONL transcript stops at the successful `tool_result` — no new entries
- `TaskOutput` always returns `running` (can't distinguish "actively generating" from "API hung")
- `KillShell` fails ("not a local bash task")
- `TaskStop` kills the agent but destroys any in-progress work
## Expected behavior
A configurable timeout (e.g., `api_timeout_seconds` in `ClaudeAgentOptions`) that:
1. Detects when an API response hasn't produced any events for N seconds
2. Marks the agent as `error` with a clear timeout message
3. Writes the error to the agent's JSONL for downstream tracking
## Workaround
We implemented a 20-minute wall-clock timeout in our stop hook that unblocks the parent task, but the hung agent process itself stays alive consuming resources.
## Environment
- claude-agent-sdk: 0.1.48
- Claude Code CLI: 2.1.72 (bundled)
- Observed on: Python 3.12, Linux (GKE)
- Original incident: CLI 2.0.72, but the underlying issue (no API timeout) persists
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.