Skip to content

[Bug]: exec timeouts above the Node timer limit cancel almost immediately #441

Description

@adenzhou1350

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

  • I have searched existing issues.
  • I have included my version and removed sensitive information.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions