Skip to content

Read a Launcher That Builds an Inner timeout as Nesting #2195

Closed as not planned

Description

@ptr727

Problem

gh-write-guard.py reads a nested timeout only where a word names timeout. A launcher can build the inner timeout from its own arguments, so no word names it, and the outer timeout is read as the bound. These are allowed, and an outer SIGKILL can end the inner timeout before its deadline while the loop under it keeps running:

timeout -s KILL 10 env -S 'timeout 800' bash -c 'until [ -f x ]; do sleep 60; done'
echo timeout | timeout -s KILL 10 xargs -I% % 800 bash -c 'until [ -f x ]; do sleep 60; done'

Origin

Raised by a local strict review on feature/auto-1634 (handoff #2072). Decision #2118 chose to declare this class in host-setup/agent-safety/README.md requirement 7 as a shape not reached, and to file it as this follow-up.

Done looks like

Either the guard reads a launcher that runs a command built from its arguments (env -S/--split-string, xargs with a replacement string, and any others named) as possible nesting, with a self-test row for each shape above, or this issue closes with the declared limit kept as the answer.

Activity

  1. added
    pre-existingReview finding classed pre-existing per local-strict-review Disposing of Findings
    on Oct 1, 2026
  2. ptr727 commented on Oct 8, 2026

    @ptr727
    OwnerAuthor

    Declined per #2517, approved by the maintainer, under GOVERNANCE.md "Trust Boundaries and Hardening Effort": The guard backstops an agent's own mistakes, and this is a command shape built to defeat it rather than one an agent session writes, so a miss does not realistically occur. See #2517 for the per-issue reason.

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

    pre-existingReview finding classed pre-existing per local-strict-review Disposing of Findings

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions