Skip to content

fix(images): normalize bounded sources before Responses encoding - #336

Merged
danielkov merged 1 commit into
mainfrom
danielkov/fix-314-oversized-chat-image-causes-persistent-provider
Nov 1, 2026
Merged

danielkov merged 1 commit into
mainfrom
danielkov/fix-314-oversized-chat-image-causes-persistent-provider

Conversation

@danielkov

Copy link
Copy Markdown
Contributor

Summary

Inspect inline image dimensions even when their encoded field is small, and normalize safely decodable sources to the Responses output limits. Preserve actionable, sanitized local image failures in diagnostics.

Motivation

The existing normalization path only inspected images above the wire-byte limit and applied the output-axis limit before resizing. This rejected bounded long screenshots and let highly compressed oversized dimensions bypass normalization.

Impact

Long images within the existing source safety budgets can continue through retained-history requests without changing durable attachments. Images exceeding those budgets remain rejected with guidance to start a new conversation with a smaller image; removing or replacing an already-retained invalid attachment is not implemented here.

Partial fix for #314.

Technical details

The source limits remain 10 MiB encoded, 16,777,216 pixels, and 64 MiB decoded bytes. Output dimensions are reduced before the existing JPEG byte-budget loop, while fitting images retain their original encoding. WebP chunk ranges, including frame subchunks, are validated against the bounded source before metadata decoding. Diagnostic messages use an exact static allowlist rather than arbitrary provider text.

@kit-code-agent kit-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found. The changes look good to merge.

Took 14 min

@danielkov
danielkov merged commit d09f558 into main Nov 1, 2026
5 checks passed
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