Repository navigation
Exempt ai-memory's SHA-256 rejection fingerprints (#116's evidence) from generic-api-key - #155
Conversation
…from generic-api-key learning.report.aggregate.repeated_rejection_fingerprints[].key in observability/memory-scheduled-20260923.json is ai-memory's rejection_fingerprint (hex_sha256 over normalized rejection fields), a content digest. Rule-scoped, exact-file, whole-line allowlist with regression tests (test_e, test_e2) that an api_key in the file and the same lines elsewhere stay detected. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bab77aba2c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…hex key stays detected Review of #155 (optional hardening, adopted): the allowlist names the 4 reviewed digests instead of any 64-hex value, like the QuantConnect entry, so a later value under "key" in the same file is still a finding; test_e2 now asserts that case. Comment date aligned to 2026-09-23. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
An independent review (evidence-reviewer, Opus at max) passed, and I adopted its optional hardening at
The reviewer confirmed at upstream HEAD |
…ary (Codex review of #155) The validate job has no gitleaks, so tests/test_gitleaks_config.py skipped entirely in CI. The secret-scan job now runs it with the pinned binary on PATH and GITLEAKS_TESTS_REQUIRED=1, under which a missing binary fails instead of skipping; test_workflow_hardening pins the step. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This unblocks #116 without touching its branch.
#116's
secret-scanfails on 4generic-api-keyfindings. All four are"key": "<64-hex>"lines underlearning.report.aggregate.repeated_rejection_fingerprints[]inobservability/memory-scheduled-20260923.json. Each sits beside acount, in a list whose other entries usekeyfor plain category names.Why they are digests, not secrets. They are ai-memory's
rejection_fingerprintvalues. The function is atakitaonrails/ai-memorycrates/ai-memory-store/src/auto_improve.rs, around line 1450, and returnshex_sha256over the rejection record's normalized target_path, kind, operation, edit_mode, reason and summary. The module doc describes "a whitespace/case-insensitive fingerprint so the telemetry report can spot the same proposal being re-staged and re-rejected."Exemption. It follows this config's reviewed pattern: scoped to one rule, one exact file (the path does not exist on main yet, so the entry is inert until #116 lands), and whole anchored lines only (
^\s*"key":\s*"[0-9a-f]{64}",?\s*$).Regression tests.
test_e: fingerprints in that file are not flagged.test_e2: anapi_keyin the same file, and the same lines in another file, are still detected.Checks.
gitleaks dirover Record scheduled memory learning and daily native lifecycle evidence #116's four added files with this config: no leaks; the current config finds 4.validate.py,evidence_manifest --check, the gate andtests.test_gitleaks_configpass.gitleaks diris clean.After this merges, #116 needs to merge main (which also brings the required
verdict-review-gatejob).🤖 Generated with Claude Code