Skip to content

docs: state the approval walls at their real strength - #228

Merged
Max17190 merged 3 commits into
mainfrom
approval-wall-wording
Aug 19, 2026
Merged

docs: state the approval walls at their real strength#228
Max17190 merged 3 commits into
mainfrom
approval-wall-wording

Conversation

@Max17190

@Max17190 Max17190 commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Why

docs/configuration.md said an agent cannot launder a grant through env -u in bash because --approve refuses agent-spawned processes and callers with no terminal. The session marker, the attestation variable, and a terminal are all things a shell the agent runs can arrange, and the ledger record that results reads like a human's; require_human's own comment says as much. The walls stop a grant from happening by accident and hold against an agent that follows the prompt; what makes the grant a human act against an agent that sets out to take one is the hardened profile the same page describes. Governance surfaces should state the true shape where the reader looks.

Summary

  • docs/configuration.md: the approvals paragraph states the walls at their real strength, says the hardened profile (an ask rule on bash) is what closes it, and says the same about the permission and trust files under ~/.openmax/ (unreachable by the confined file tools, reachable by bash).
  • --spec tools: the one sentence about --approve aligned.
  • hooks.rs: the module doc no longer claims hooks never inject text into the model (a pre_tool_use block reason is the call's tool result, a blocking turn_end reason is a user message); the user_prompt_submit doc keeps its narrower, true claim.

Test Plan

  • Documentation and doc comments only; no behavior change. cargo test --workspace green; clippy at zero warnings.

Greptile Summary

The documentation now accurately explains the boundary between hook-authored and harness-generated refusal messages, and clearly distinguishes interactive and stdio approval behavior from headless execution. End-to-end checks confirmed the described behavior: hook-authored refusals are clipped, fail-closed harness messages are preserved, headless ask mode declines an explicit permission gate, and headless auto mode accepts it.

Confidence Score: 5/5

No blocking failure remains; the documented behavior matches the exercised product behavior.

No accepted blocking findings remain after exercising the hook refusal and headless permission-gate flows.

T-Rex T-Rex Logs

What T-Rex did

  • Ran a real headless OpenMax flow with an approved pre-tool hook that returned a 600-character refusal, then a second flow where the approved hook changed after approval; the hook-authored refusal was observed as 501 characters ending in an ellipsis, while the changed fail-closed message was observed as a 1,576-character reason with no ellipsis.
  • Under an explicit global effect flag set to ask for write_file, the ask mode emitted a gate request and declined it, writing no file; the auto mode emitted the same request, approved it, and wrote gate-proof.txt containing accepted.
  • Proof 1 corroborates the details by showing hook cap / fail-closed data and headless gate outcomes: in ask mode the gate was declined with no side effects, while in auto mode the gate was approved with side effects present.

View all artifacts

T-Rex Ran code and verified through T-Rex

Reviews (3): Last reviewed commit: "docs: the bash ask rule holds where ther..." | Re-trigger Greptile

configuration.md said an agent cannot launder a grant through `env -u` in
bash because `--approve` refuses agent-spawned processes and callers with no
terminal. The session marker, the attestation variable, and a terminal are
all things a shell the agent runs can arrange, and the ledger record that
results reads like a human's; require_human's own comment says as much. The
walls stop a grant from happening by accident and hold against an agent that
follows the prompt; what makes the grant a human act against an agent that
sets out to take one is the hardened profile the same page describes (bash
asks, so the command that would arrange those markers is seen first). The
page now says exactly that, and says the same about the permission and
trust files under ~/.openmax/, which the confined file tools cannot reach and
bash can. The --spec tools sentence is aligned.

hooks.rs claimed hooks never inject text into the model; a pre_tool_use
block reason is the call's tool result and a blocking turn_end reason is a
user message. The module doc now names the two, and the user_prompt_submit
doc keeps its narrower, true claim.
Comment thread crates/core/src/hooks.rs Outdated
…losed reasons

Review pointed out that the harness's own fail-closed reasons (a revoked
gate, a gate whose approved code changed) bypass MAX_REASON_CHARS; the
module doc now says which text is clipped and which is not.
Comment thread docs/configuration.md Outdated
Review pointed out that a headless -p run in auto mode accepts gate cards
itself, including one raised by an explicit ask rule, so the page no longer
promises the rule puts the command in front of a human there; it names the
TUI and --stdio as where it does, and ask mode or the stdio wire as where
authority-changing headless work belongs.
@Max17190
Max17190 merged commit c9e47e2 into main Aug 19, 2026
4 checks passed
@Max17190
Max17190 deleted the approval-wall-wording branch August 19, 2026 03:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant