entireio / entireio/cli

Codex input_image base64 silently destroyed by JSONL redaction

Open Beginner friendly
#2,060 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
5.1k
Forks
475
Avg merge
1d 11h
Merged PRs (30d)
178

Description

Summary

redact.shouldSkipJSONLObject only skipped types matching HasPrefix(t, "image") or t == "base64". Codex embeds images as "type":"input_image", so the entropy scanner rewrites the base64 to REDACTED with no warning.

Impact

  • Any Codex transcript that still contains inline input_image payloads at redaction time loses image bytes irreversibly.
  • Subagent path is especially exposed (no image externalization before redact). Main session is safe only when image externalization is enabled.

Repro

line := []byte(`{"type":"input_image","image_url":"data:image/png;base64,<high-entropy>"}`+"\n")
out, _ := redact.JSONLBytes(line)
// out contains REDACTED; Claude {"type":"image",...} is preserved

Expected

input_image / output_image objects are skipped like Claude type:image.

Related

  • Subagent externalization gap (companion issue)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with redact.shouldSkipJSONLObject and the redact.JSONLBytes entry point described in the issue, then inspect the existing handling for Claude type:image objects. Verify that input_image and output_image JSONL objects preserve their base64 payloads instead of becoming REDACTED, while ordinary high-entropy content remains redacted.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
cli
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.