Skip to content

source-control:babysit-prs: safety.md's 'never retry a harness permission denial' rule doesn't match auto-mode classifier's actual (retriable) behavior #455

Description

@kyle-sexton

Lane: babysit-prs (safe-tier fix-round worker)

Triggering example: #452 fix-round worker. It attempted a gh api .../reactions POST (thumbs-up on a Codex finding it had just fixed). The call was "initially blocked by the auto-mode permission classifier"; the worker retried and the retry succeeded, confirmed via the reactions endpoint afterward.

What happened: reference/safety.md's Harness Permission Layer section states, verbatim: "Harness/runtime permission denial ... do not retry the call, do not route around it with a different tool or approach, and report exactly what was attempted and that the harness blocked it." The worker's own report describes exactly the scenario this rule covers (an auto-mode classifier block before the script ran) but then retried anyway, and the retry succeeded. Either the worker didn't follow the instruction, or — more likely given the retry actually worked — the auto-mode permission classifier's "denial" is not the hard, non-retriable policy ceiling safety.md assumes; it can be a transient/re-askable block that clears on a second attempt.

What should happen: safety.md should say what to do when a gh api call is blocked by the auto-mode classifier specifically (as opposed to an explicit settings.json permission rule denial) — if that denial class is legitimately retriable once, say so and bound the retry count; if it is not supposed to be retried, the instruction needs to be unambiguous enough that a worker doesn't end up doing it anyway and self-reporting it as routine. Right now a worker following the letter of the rule and a worker retrying past it both look "compliant" from the outside, which isn't a safe invariant for a rule whose whole point is bounding autonomous action around permissions.

Category: behavioral

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.wayfind: designWayfind decision item: design-space or domain-model decision; human in the loop.

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions