Fix Import Redaction Config for Checkpoints · Entire
Fix only the selected review findings. Do not rewrite unrelated code. Run targeted tests where practical, then report what changed and what verification passed.
Reviewed commit: c4bfa4f340d3cb60a025920aee7c5a812d05bb60
Worktree: /Users/ninawork/entire/devenv/cli
Selected findings
Codex findings: High:
entire import claude-code bypasses configured redaction initialization before...
High: **entire import claude-code bypasses configured redaction initialization before writing imported transcripts. The command calls agentimport.Run directly ( import_cmd.go), and the importer redacts with redact.JSONLBytes ( agentimport.go), but it never calls strategy.EnsureRedactionConfigured(), which is documented as required before checkpoint writes and loads opt-in PII, custom_redactions, and redactor packs ( common.go). Always-on redaction still runs, but repo/user-configured rules are skipped for imported history. Add the initialization before import writes and cover it with a custom-redaction test.
Codex findings: Medium:
Imported provenance persists local absolute transcript paths, and also stores...
Medium: **Imported provenance persists local absolute transcript paths, and also stores a SHA-256 over the raw turn slice. The metadata schema explicitly stores transcript_path as "absolute path at import time" ( metadata.go), and writeTurn writes sf.Path into checkpoint metadata ( agentimport.go). ContentHash is computed from raw, unredacted turn bytes before redaction ( claude.go). Since imported checkpoints live on the normal v1 metadata branch, this can publish local usernames/repo paths and enables confirmation attacks against guessed raw content. Prefer omitting the path, storing only basename/source/session/line bounds, and hashing redacted content if a hash is needed.
Codex findings: Medium:
The working tree includes untracked raw transcript/debug artifacts and Mach-O...
Medium: **The working tree includes untracked raw transcript/debug artifacts and Mach-O binaries in review scope. For example, full-example.jsonl contains raw Claude transcript data with local paths and prompt content ( full-example.jsonl); transcript-output.jsonl, metadata-example.json, compact-debug, and migrate-v2-checkpoints are also untracked. These should be removed, ignored, or sanitized before any PR/commit.
Codex findings: Low:
**Imported checkpoints are read-only and --generate is refused (explain.go), but normal explain output still tells users to run entire explain --generate <id> when no summary exists ( explain.go). Gate that hint on summary.Imported.
What changed
Finding 1 (High) — redaction config bypass
cmd/entire/cli/import_cmd.go
Added strategy.EnsureRedactionConfigured() before agentimport.Run, so imported transcripts get repo/user-configured opt-in PII, custom_redactions, and redactor packs — not just always-on secret scanning. Covered by a new test (TestRun_AppliesConfiguredCustomRedaction) that configures an inline custom rule, imports a transcript containing the marker, and asserts the stored transcript is redacted.
Finding 2 (Medium) — provenance leaks
api/checkpoint/metadata.go, cmd/entire/cli/agentimport/{agentimport,claude}.go
- Renamed
Provenance.TranscriptPath(absolute path) →TranscriptFile(jsontranscript_file), now storing onlyfilepath.Base(sf.Path)— no more local usernames/repo layout published to the v1 branch. - Moved
ContentHashcomputation out ofclaude.go(where it hashed raw bytes) intoRun, where it hashes the redacted turn slice via a newcontentHashhelper — closing the confirmation-attack vector against guessed raw content. Dropped the now-unusedTurn.ContentHashfield andcrypto/sha256/encoding/heximports fromclaude.go.
Finding 4 (Low) — misleading explain hint
cmd/entire/cli/explain.go
Gated the --generate hint on summary.Imported; imported checkpoints now show "Imported history is read-only, so summaries cannot be generated." instead of pointing at a command that errors out.
Finding 3 (Medium) — untracked artifacts
Deleted (per your choice): full-example.jsonl, transcript-output.jsonl, metadata-example.json, compact-debug, migrate-v2-checkpoints. Note: other untracked debug files remain (e.g. pr864-*.json/txt, deadcode-all.txt, err.log, review-0*.md, entire-checkpoints-playground.html) — the finding named only these five; say the word if you want those handled too.
Verification passed
go test ./cmd/entire/cli/agentimport ./cmd/entire/cli/checkpoint ./api/checkpoint— okgo test ./cmd/entire/cli— okmise run fmt && mise run lint— 0 issuesgit diff --check— clean (exit 0)
E2E tests not run (real API calls; not requested).
Commit 1747e427b — the four review fixes (redaction config init, provenance basename, redacted-content hashing, gated explain hint) plus the custom-redaction test. Lint clean and the targeted tests passed before push. The five deleted artifacts were untracked, so they're not part of the commit.