Product or interface
CLI - headless
Version
Source commit 4401b0edb0e6ad753d3952b75a31ec87807b6aab; Node.js 24.14.1; pnpm 11.7.0.
Platform
Windows x64, OS build 10.0.26200.
Issue area
Other — execution timeout handling.
Steps to reproduce
The headless parser accepts --timeout 2147483648ms and --timeout 600h
because both convert to positive safe integers. The value is forwarded as
policy.timeoutMs, then passed directly to Node's setTimeout:
A minimal check of the underlying Node behavior, with no provider or credentials:
const start = performance.now();
setTimeout(() => console.log('unexpected early expiry:', performance.now() - start), 2147483648);
I also tested the complete pinned invocation and coordinator executable bodies
after Node's TypeScript transformation, using real Node timers and a synthetic
conversation port that finishes after 40 ms. The port records abortSession
calls; no model, network, tool or stored session is used. Three repeats each:
| Parsed timeout |
Coordinator result |
Abort reason |
2h |
succeeded |
none |
2147483647ms |
succeeded |
none |
2147483648ms |
timeout |
timeout |
600h |
timeout |
timeout |
This is an isolated component reproduction, not a built-CLI, live-provider,
interactive-TUI or ACP acceptance test. No actual 25-day execution is needed.
Expected and actual behavior
Expected: reject unsupported durations before starting a run, or preserve the
requested deadline using bounded timer intervals.
Actual: larger accepted durations cancel the run almost immediately. Node
clamps values above 2147483647 to 1 ms, as documented in
its timer API.
The coordinator separately forwards a deadline about 25 days in the future,
so the immediate local cancellation contradicts that deadline.
This affects unusually large timeout values; ordinary hour-scale controls passed.
Redacted error summary
TimeoutOverflowWarning: 2147483648 does not fit into a 32-bit signed integer.
Timeout duration was set to 1.
Before submitting
Product or interface
CLI - headless
Version
Source commit
4401b0edb0e6ad753d3952b75a31ec87807b6aab; Node.js 24.14.1; pnpm 11.7.0.Platform
Windows x64, OS build 10.0.26200.
Issue area
Other — execution timeout handling.
Steps to reproduce
The headless parser accepts
--timeout 2147483648msand--timeout 600hbecause both convert to positive safe integers. The value is forwarded as
policy.timeoutMs, then passed directly to Node'ssetTimeout:A minimal check of the underlying Node behavior, with no provider or credentials:
I also tested the complete pinned invocation and coordinator executable bodies
after Node's TypeScript transformation, using real Node timers and a synthetic
conversation port that finishes after 40 ms. The port records
abortSessioncalls; no model, network, tool or stored session is used. Three repeats each:
2h2147483647ms2147483648ms600hThis is an isolated component reproduction, not a built-CLI, live-provider,
interactive-TUI or ACP acceptance test. No actual 25-day execution is needed.
Expected and actual behavior
Expected: reject unsupported durations before starting a run, or preserve the
requested deadline using bounded timer intervals.
Actual: larger accepted durations cancel the run almost immediately. Node
clamps values above
2147483647to 1 ms, as documented inits timer API.
The coordinator separately forwards a deadline about 25 days in the future,
so the immediate local cancellation contradicts that deadline.
This affects unusually large timeout values; ordinary hour-scale controls passed.
Redacted error summary
Before submitting