codex-pair-ack — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited codex-pair-ack (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Records an ack for the given finding hash so the codex-pair Stop-gate skips it on future turn-ends. The gate prints a full 16-char hash in its block message, e.g. [fc69d46835dfd2ab] src/auth.ts — pass that hash verbatim.
<hash> (16-char hex). The remaining text (strip enclosing quotes if present) is <reason>. If either is missing, print usage and stop: Usage: /codex-pair-ack <hash> "<reason>"
Example: /codex-pair-ack fc69d46835dfd2ab "false positive — test-only code path".codex-pair/context.md. The directory that contains .codex-pair/ is <markerDir>. If no marker is found after reaching the filesystem root, tell the user: codex-pair is not enabled in this project (no .codex-pair/context.md found). Nothing to acknowledge.^[0-9a-f]{16}$. If it does not, print the usage block from step 1 and stop (a malformed hash means the user mistyped it).<plugin-root> (the absolute path of this plugin, i.e. the value of CLAUDE_PLUGIN_ROOT), <markerDir>, and <hash>. Do NOT interpolate `<reason>` into the command string — the reason is read from stdin via a single-quoted heredoc so the shell never expands $(...), backticks, or quotes inside it (injection-safe). Replace the <reason> line with the user's reason text verbatim: node --input-type=module -e '
import { addAck } from "<plugin-root>/scripts/lib/state.mjs";
import { readFileSync } from "node:fs";
// With `node -e CODE A B`, process.argv = [node, A, B] (no script-file
// placeholder), so argv[1]=markerDir, argv[2]=hash.
addAck(process.argv[1], process.argv[2], { reason: readFileSync(0, "utf8").trim() });
' "<markerDir>" "<hash>" <<'CODEX_PAIR_ACK_REASON'
<reason>
CODEX_PAIR_ACK_REASONaddAck writes to <markerDir>/.codex-pair/state/acks.json (creating the directory if needed). The hash is passed verbatim — no resolution is performed.
Acknowledged `<hash>` — <reason>. The Stop-gate will skip this finding.If the node one-liner exits non-zero, surface the error output so the user can diagnose it.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.