Description
After an ACP prompt timeout ("LLM request timed out after N seconds"), the session becomes completely unusable:
- Backend process continues running and consuming tokens
- Sending follow-up messages triggers cascading timeouts
- The connection is disconnected (too aggressive), killing the entire session
Context
The timeout handler called disconnect() which killed the child process entirely. The ACP protocol provides session/cancel for gracefully canceling a running prompt turn without destroying the connection. Additionally, the timeout duration was hardcoded at 300 seconds with no way for users to configure it.