Skip to content

feat(#3996): reject incompatible image-output gateway requests - #4020

Draft
aheritier wants to merge 1 commit into
gemini-output-capabilityfrom
gemini-image-request-guard
Draft

feat(#3996): reject incompatible image-output gateway requests#4020
aheritier wants to merge 1 commit into
gemini-output-capabilityfrom
gemini-image-request-guard

Conversation

@aheritier

@aheritier aheritier commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

What

Rejects incompatible Gemini image-output gateway requests before dispatch, with shared diagnostics and integration coverage across runtime and TUI paths.

Why

Provides a deterministic, actionable failure instead of sending unsupported response modalities to a gateway.

Validation

task test; Gemini guard and runtime/TUI integration tests.

Test instructions

Run:

task test

Request image output through a Gemini gateway using an incompatible model, then using a compatible model. Expected: the incompatible request is rejected before dispatch with the categorized diagnostic, while the compatible request proceeds normally.

@aheritier aheritier added area/docs Documentation changes area/providers/gemini Google Gemini provider support area/runtime Runtime engine, agent loop execution, tool dispatch, loop detection area/tui For features/issues/fixes related to the TUI kind/feat PR adds a new feature (maps to feat:). Use on PRs only. labels Aug 22, 2026
@aheritier
aheritier force-pushed the gemini-image-request-guard branch 2 times, most recently from ee1c735 to 70bd556 Compare August 25, 2026 07:58
@aheritier
aheritier force-pushed the gemini-image-request-guard branch 2 times, most recently from 65cfdea to 890abfa Compare August 26, 2026 11:07
@aheritier
aheritier force-pushed the gemini-image-request-guard branch 2 times, most recently from 48f364f to 890abfa Compare September 1, 2026 16:18
@aheritier
aheritier force-pushed the gemini-image-request-guard branch from 890abfa to d1eeba5 Compare September 1, 2026 16:29
aheritier

This comment was marked as resolved.

Reject tools, built-in tools, and structured output before dispatch whenever image output resolves enabled on Google gateway, direct Gemini API, or Vertex AI. The guard uses the same binding capability policy as request construction: explicit false, then explicit true, then exact models.dev Modalities.Output=image for an omitted image flag; unknown or unavailable metadata stays off. It never guesses from model names.

Return fixed safe incompatibility classes, enrich custom-tool errors from models.dev tool_call metadata when available, and keep provider text, prompts, names, and schemas out of user-visible guard errors.
@aheritier
aheritier force-pushed the gemini-image-request-guard branch from f1e4e19 to 8ba3b99 Compare September 7, 2026 11:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/docs Documentation changes area/providers/gemini Google Gemini provider support area/runtime Runtime engine, agent loop execution, tool dispatch, loop detection area/tui For features/issues/fixes related to the TUI kind/feat PR adds a new feature (maps to feat:). Use on PRs only.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant