Skip to content

Copilot image-view tool succeeds, but PNG content appears missing from outgoing inference requests #74972

Open

Description

@johndowns

Summary

In a Copilot-based agentic workflow, the built-in view tool successfully opens a PNG and records an image in binaryResultsForLlm. However, the subsequent logged model request contains only the text Viewed image file successfully. No structured image content appears in the request, and the model reports that it cannot see the image.

I am reporting this here because the failure occurs in the gh-aw-managed Copilot inference path. I have not established whether the defect belongs to gh-aw, Copilot CLI, or the provider integration.

Environment

Component Version / setting
gh-aw compiler v1.0.1
Copilot CLI 1.0.103
AWF v0.29.0
Model gpt-5.3-codex
Trigger workflow_dispatch

The workflow uses the Copilot engine with the firewall enabled.

Reproduction

This minimal workflow has been run and reproduces the failure.

  1. Save the workflow as .github/workflows/png-vision-diagnostic.md in a repository configured to run Copilot-based agentic workflows.
  2. Save the test image as vision-test.png at the repository root. It is a 731 x 299 pixel PNG, 21,942 bytes.
  3. Compile with gh aw compile png-vision-diagnostic using gh-aw v1.0.1.
  4. Commit and push the Markdown, generated lock, and image to the default branch.
  5. Manually run PNG vision diagnostic.

The workflow asks the model to open the PNG with the built-in image-viewing tool and transcribe its labels, numbers, positions, and relationships. It prohibits reading other files or using OCR commands to infer the answer.

Expected behavior

The image content returned by view should reach the vision-capable model in the provider's supported image-input format.

If this inference path does not support image inputs, the workflow should surface an explicit unsupported-capability error rather than providing only a success message.

Actual behavior and evidence

1. The tool records an image result

The tool-completion event reports success and includes the following metadata. The asset ID and repository path are omitted here.

{
  "content": "Viewed image file successfully.",
  "binaryResultsForLlm": [
    {
      "type": "image",
      "mimeType": "image/png",
      "byteLength": 21942
    }
  ]
}

2. The subsequent logged model request contains only text

The corresponding Responses API input item is:

{
  "type": "function_call_output",
  "call_id": "<view-call-id>",
  "output": "Viewed image file successfully."
}

Across all three logged model requests in this run, there are no input_image items or other structured image payloads. These are client-side logs; I cannot independently inspect what the upstream inference service received.

3. The model reports missing visual content

The model calls report_missing_data with data type image visual content and this reason:

I need visible pixel content from vision-test.png to transcribe labels and numbers, but the image-view tool returned only a success status without any renderable image data.

The agent job itself succeeds; the workflow's conclusion job then marks the run failed. No label transcription is produced.

Questions

  • Is forwarding built-in view image results supported through the gh-aw-managed Copilot inference path?
  • Is a capability setting or configuration required to preserve binaryResultsForLlm image content?
  • If this is a Copilot CLI or provider-integration defect, which component should receive this report?

Activity

  1. locked and limited conversation to collaborators on Nov 4, 2026
  2. unlocked this conversation on Nov 4, 2026
  3. muhammadkhan0009 commented on Nov 5, 2026

    @muhammadkhan0009

    I reproduce this too, with the Copilot engine and claude-opus-4.8 on two gh-aw versions, which adds the following to your report:

    gh-aw Copilot CLI Model
    v0.80.9 1.0.63 claude-opus-4.8
    v0.93.6 1.0.101 claude-opus-4.8

    Setup. A minimal workflow_dispatch workflow with the Copilot engine and the firewall on. A pre-agent-steps step copies two 390x500 PNGs into /tmp/gh-aw/agent/. Each PNG shows a coloured header, a title and a unique secret word, so only a model that receives the pixels can answer. We gave the images two ways:

    • A: @/tmp/gh-aw/agent/probe-at.png appended to /tmp/gh-aw/aw-prompts/prompt.txt (the CLI runs with --prompt-file)
    • B: the prompt asks the agent to open /tmp/gh-aw/agent/probe-view.png with its file tool

    Result. Neither image reached the model on either version.

    • On 1.0.101, the CLI log shows [Image: Image file at path /tmp/gh-aw/agent/probe-at.png [image/png] 390x500], but the model gets only Viewed image file successfully.
    • On 1.0.63, the same view call logs 1 line read.
    • The @path attachment in the prompt file had no effect either.

    The silent failure leads to confabulation. On v0.93.6 the model first called noop with a full, confident and wrong description:

    header title "PROBE A" on a blue header, secret word "ALPHA", with a green circle … header title "PROBE B" on a red header, secret word "BRAVO", with an orange triangle

    The real images were purple and green headers, with "Profile > Uploads" / "Settings > Notifications", MARIGOLD-58 / ORCHID-24, and orange circles. Only a "never guess" instruction in the prompt made it send a correction (not visible) afterwards. In a real workflow, a screenshot-based agent can act on a screen it never saw.

    Possible cause. The compiled lock file runs Copilot CLI with COPILOT_API_KEY="$COPILOT_DUMMY_BYOK" through the gh-aw API proxy. That looks like the same path as github/copilot-cli#4600, where images in tool results are silently dropped under a BYOK provider while user-turn attachments still work.

    Asks.

    1. If gh-aw's Copilot path can't carry images today, fail loudly on an image tool result instead of returning a success message.
    2. Document this limitation on the Copilot engine page.
  4. locked and limited conversation to collaborators on Nov 5, 2026
  5. unlocked this conversation on Nov 5, 2026
  6. lpcox commented on Nov 7, 2026

    @lpcox
    Collaborator

    🔗 AWF tracking issue: #aw_track1

    Generated by Firewall Issue Dispatcher · copilot · auto · ~18 AIC · ⊞ 5.5K · ◷

  7. lpcox commented on Nov 8, 2026

    @lpcox
    Collaborator

    🔗 AWF tracking issue: #aw_track1

    Generated by Firewall Issue Dispatcher · copilot · auto (Claude Sonnet 5.5) · ~21 AIC · ⊞ 5.7K · ◷

  8. lpcox commented on Nov 8, 2026

    @lpcox
    Collaborator

    🔗 AWF tracking issue: #aw_track1

    Generated by Firewall Issue Dispatcher · copilot · auto (Claude Sonnet 5.5) · ~21 AIC · ⊞ 5.7K · ◷

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions