Skip to content

fix(session): sanitize image attachments - #1

Draft
BASIC-BIT wants to merge 15 commits into
devfrom
fix/sanitize-image-attachments
Draft

BASIC-BIT wants to merge 15 commits into
devfrom
fix/sanitize-image-attachments

Conversation

@BASIC-BIT

@BASIC-BIT BASIC-BIT commented Feb 9, 2026 •

Copy link
Copy Markdown
Owner

Prevents sessions from getting stuck replaying unsupported image attachments.

  • Drop image attachments unless the MIME is one of: image/jpeg, image/png
  • Normalize image/jpg -> image/jpeg (including data: URL headers)
  • Add unit coverage for Media helpers + message conversion

Upstream context: anomalyco#9785, anomalyco#4781 (related: anomalyco#9512)

kozak-codes added a commit to kozak-codes/opencode that referenced this pull request Mar 28, 2026
Prevents sessions from getting stuck replaying image attachments that
exceed provider limits. Three new guards added to unsupportedParts():

- Unsupported MIME type: only image/jpeg, image/png, image/gif, image/webp
  are accepted (all major providers). image/jpg is normalized to image/jpeg.
  Anything else (bmp, tiff, svg, etc.) is replaced with a descriptive error.

- Size limit: base64 payload > 5 MB is rejected. Anthropic enforces a hard
  5 MB cap; exceeding it poisons the session history and causes every
  subsequent request to fail with a 400.

- Dimension limit: PNG images with any side > 2000px are rejected. Anthropic
  rejects these in multi-image requests with a 400. Dimensions are read from
  the PNG IHDR header without a full decode (fast, no deps).

Adds 6 new tests covering: unsupported MIME, jpg normalization, oversized
payload, oversized PNG dimensions, valid small PNG, all four accepted types.

Closes: anomalyco#4781
Related: anomalyco#9785, anomalyco#9512, BASIC-BIT#1
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