Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions scripts/codex-offline-release-smoke/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,28 @@ hand, invent a trust API, use bypass flags, inject Stop, or invoke `tap` manuall
Authorized UI automation may operate this real TTY. Never submit a model prompt
in the trust TUI.

In the pinned **Codex CLI 0.162.0** TUI, `/hooks` is an event/handler browser.
Select the **Stop** event and press **Enter** to open its handlers. Review the
notification wrapper and observation tap commands separately, selecting each
handler and pressing **t** to trust that handler. Do **not** press `t` on the
event-list page (that trusts *all* listed hooks). On a handler, **Enter** and
**Space** toggle an already-trusted hook; they do **not** grant trust.

A handler may appear `Trusted` immediately after `t` while Codex writes its
`trusted_hash` asynchronously through `config/batchWrite`. Keep the TUI open
long enough to observe any write error. Reopen `/hooks` to review the two Stop
handlers again before exiting normally. A visible `Trusted` label alone does
not prove persistence. For diagnosis, only *read* the private
`ROOT/codex/config.toml` (`[hooks.state]`): the two Stop keys' stored hashes
should match their current hashes. The independent app-server `hooks/list`
check in the `turn` preflight is authoritative for the test, and must report
both Stop commands as enabled, unmanaged, and `trusted`. The preflight saves
`ROOT/hooks-list.json` before checking trust and does not create
`ROOT/turn-started.json` or submit any prompt if trust is missing. Retain both
the file and the TUI/console error as failure evidence; never hand-edit
`trusted_hash`, bypass trust, or retry an uncertain turn. Use a fresh,
explicitly approved TEST context for a new attempt.

```sh
"$NODE_ARM64" "$SMOKE" turn "$INPUTS_JSON"
# SIGTERM the exact owned server wrapper PID and wait for successful closure.
Expand Down
Loading