Summary
Pilot currently hardcodes the OpenCode HTTP client timeout to 10 minutes in the backend. When OpenCode takes longer to return message response headers or stream setup, execution fails with:
context deadline exceeded (Client.Timeout exceeded while awaiting headers)
Why this matters
OpenCode task execution time can vary significantly by repository size, provider latency, and task complexity. A fixed 10-minute HTTP timeout is too rigid for long-running sessions.
Proposed behavior
Add a config option under:
executor:
opencode:
request_timeout: 20m
Behavior:
- default remains 10m for backward compatibility
- configurable via YAML
- invalid or empty values fall back to 10m
- used by the OpenCode backend HTTP client for session/message requests
Reproduction context
With current behavior, recent local runs failed after the schema issue was fixed, but then hit:
Post \"http://127.0.0.1:44096/session/.../message\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
This indicates the payload is accepted, but the request lifetime is too short for some runs.
Scope
This is specifically about OpenCode backend HTTP request timeout, not the broader task execution timeout routing already present under executor.timeout.
Summary
Pilot currently hardcodes the OpenCode HTTP client timeout to 10 minutes in the backend. When OpenCode takes longer to return message response headers or stream setup, execution fails with:
Why this matters
OpenCode task execution time can vary significantly by repository size, provider latency, and task complexity. A fixed 10-minute HTTP timeout is too rigid for long-running sessions.
Proposed behavior
Add a config option under:
Behavior:
Reproduction context
With current behavior, recent local runs failed after the schema issue was fixed, but then hit:
This indicates the payload is accepted, but the request lifetime is too short for some runs.
Scope
This is specifically about OpenCode backend HTTP request timeout, not the broader task execution timeout routing already present under
executor.timeout.