Skip to content

fix(security): Codex follow-up (F1 redaction, F2 rule pattern, F3 audit-chain honesty)#31

Merged
blackaxgit merged 5 commits into
mainfrom
fix/codex-followup-0.8.2
May 20, 2026
Merged

fix(security): Codex follow-up (F1 redaction, F2 rule pattern, F3 audit-chain honesty)#31
blackaxgit merged 5 commits into
mainfrom
fix/codex-followup-0.8.2

Conversation

@blackaxgit
Copy link
Copy Markdown
Owner

Closes 3 of 4 HIGH blockers Codex flagged NO-SHIP on v0.8.1.

Closed

  • R-B6/T2/T4/T6 (F1) Azure raw error tenant leak + missing snapshot/recall sinks + redaction boundary set
  • R-B1-4/B3-2/T3 + Bash(*)x NEW (F2) parse_pattern trailing-junk + file-rule overbroad gate
  • R-B5-4/T1 (F3) audit_chain honest reclassify to per-event fingerprinting (PR#29 claimed cross-process chain but the code never delivered it; CLAUDE.md constraint-integrity)

Open / deferred (tracked in CHANGELOG)

  • F4 (HIGH) serde_yml→serde_yaml_ng + libyml migration: cross-crate, needs its own focused PR
  • F5/F6/F7 (MEDIUM) workflow perms + manual-approval gate, Azure DNS-rebind reblock, default_decision=allow privileged gating

Gates 1940 workspace tests pass / clippy -D warnings / fmt / cargo deny check / 9 keychain skips intact. Codex audit at specs/2026-05-19-codex-audit-findings.md. Per-stream evidence bundles at specs/2026-05-19-f{1,2}-findings.md.

- azure.rs: redact_connection_error wraps reqwest::Error via redact_secrets
  at LlmError construction; raw e.to_string() no longer enters LlmError
- redaction.rs: expand bare-hostname Pass-2 boundary set with : ; < > = & ? \
  to scrub host:port, ;-terminated, host=...&port=... forms
- stop_auto_summary.rs + recall/mod.rs: redact_secrets before snapshot
  persist and before recall formatting (closes missed snapshot sink)
- transcript.rs (2 sinks), embeddings.rs (6 sinks), recall.rs (1 sink):
  redact_secrets around every rendered LLM error; 11 of 11 identified
  sinks wrapped; 1940 workspace tests pass
…1-4/B3-2, T3, Bash(*)x NEW)

- matching.rs parse_pattern: require closing ')' to end the string;
  rejects Bash(*)x trailing-junk that previously matched arbitrary cmds
- rules.rs file-loaded whitelist: pass through is_overbroad_allow_pattern
  (was learned-load only in PR #27); WARN+skip overbroad, deny unaffected
- 5 regression tests fail-before/pass-after proven; 865 clx-core tests pass
…inting (R-B5-4, T1)

- audit_chain claimed SHA-256 hash-chained validator_disabled audits in
  v0.8.1 but every hook process called build_record(1, ..., GENESIS_HASH)
  with no persisted head: records were never cryptographically linked
  across invocations. CLAUDE.md constraint-integrity: don't claim what
  isn't true.
- reclassified to per-event SHA-256 fingerprinting (the property the code
  actually delivers and which is genuinely useful for external aggregator
  re-verification); module/struct/fn/WARN field names updated; verify_chain
  renamed verify_fingerprint_sequence; 4 regression tests prove the
  per-event integrity property AND the documented non-linkage across
  processes; CHANGELOG [Unreleased] entries added for F1/F2/F3 + tracked
  deferrals (F4 serde_yml + F5/F6/F7) listed honestly
blackaxgit added a commit that referenced this pull request May 20, 2026
Anti-anchoring prompt + AGENTS overlay + 2026 research + adversarial recon. Already used to drive PR #31.
@blackaxgit blackaxgit merged commit e378b83 into main May 20, 2026
8 checks passed
@blackaxgit blackaxgit deleted the fix/codex-followup-0.8.2 branch May 20, 2026 02:39
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