Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Cloud agent: viewing any image ends the session with `CAPIError: 400 The image data you provided does not represent a valid image`

未关闭
#4,930 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
45/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
python, shell

调研方向

The issue is in the cloud agent's image handling for data residency tenants. Start by examining the view tool's implementation in the copilot-cli codebase, likely in a tools or commands directory. Look for where images are processed and sent to the model. The error suggests a validation failure in the API call after viewing. Check the session state management and error reporting. Reproduce with the provided PNG generation script. 'Done' is when viewing an image does not cause a session failure, and the error message is accurate.

由索引模型根据 Issue 内容生成。

描述

triage
Describe the bug

Summary

In a Copilot cloud agent session on a GHEC data residency tenant (<tenant>.ghe.com), the view tool on any image file ends the session. The tool itself reports success. The next model call is rejected, and the session dies.

The error names the image as the fault. The image is never the fault. A 4 KB, 1280x720 PNG that Pillow reads as a valid RGB image fails exactly like a real screenshot.

What the session gets

Viewed image file at path /tmp/img-720.png

then

CAPIError: 400 The image data you provided does not represent a valid image.
Please check your input and try again with one of the supported image formats:
['image/jpeg', 'image/png', 'image/gif', 'image/webp']

The session state goes to failed and that message is the task's recorded error.

Reproduction

Any session. No repository state is needed.

python3 - <<'PY'
import zlib, struct
w, h = 1280, 720
row = b'\x00' + bytes([200, 40, 90]) * w
raw = row * h
def chunk(t, d):
    c = t + d
    return struct.pack('>I', len(d)) + c + struct.pack('>I', zlib.crc32(c) & 0xffffffff)
hdr = struct.pack('>IIBBBBB', w, h, 8, 2, 0, 0, 0)
open('/tmp/img.png', 'wb').write(b'\x89PNG\r\n\x1a\n' + chunk(b'IHDR', hdr) + chunk(b'IDAT', zlib.compress(raw, 6)) + chunk(b'IEND', b''))
PY

Then call view on /tmp/img.png. The file is 4319 bytes. PIL.Image.open reads it as (1280, 720) RGB.

What I ruled out

I made five PNGs of 1280 pixels wide and 720, 1440, 2880, 5760 and 11520 pixels tall, then viewed them one per turn, smallest first. The session died on the first one.

Variable Tested Result
Height 720 through 11520 dies on the smallest
Byte size 4 KB synthetic, 78 KB real screenshot, 128 KB real screenshot all die
Images per turn one dies on one
Source hand-written PNG, Playwright page.screenshot both die
Model sweagent-capi:gpt-5.6-sol, sweagent-capi:gpt-5.6-terra both die

Why this is worse than it reads

  1. The failing step reports success. view answers Viewed image file at path <path>. The agent has no way to know it has just ended the session.
  2. The error blames the file. Every reader goes and checks the file, and the file is fine.
  3. It kills a session that already did its work. In our case a session implemented a work item across 24 files, passed 691 unit tests and 6 Playwright end-to-end tests, wrote its screenshots, then viewed three of them and died before it could open the pull request.
  4. It makes your own guidance fatal. Any instruction that tells an agent to check a screen capture before attaching it now ends the session that follows it.

What I ask for

  1. Make image input work, or say plainly that a cloud agent session cannot take image input on a data residency tenant.
  2. If it cannot, make view refuse an image with a clear message instead of accepting it and killing the next model call.
  3. Fix the error text. "The image data you provided does not represent a valid image" is wrong for a valid image, and it sends every reader to the wrong place.
Affected version

No response

Steps to reproduce the behavior

No response

Expected behavior

No response

Additional context

No response

主要语言
Shell
星标
11.2k
派生
1.9k
平均合并
14 小时 16 分钟
30 天内合并 PR
6

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

github/copilot-cli 的其他 Issue

查看 github/copilot-cli 的全部 Issue

相似的 Issue

更多 Shell/Bash Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。