问题描述
开启 sandbox 后,飞书消息中的图片附件路径会正常注入 Agent prompt,但 Agent 在 sandbox 内访问该路径时文件不存在,导致无法读取图片。关闭 sandbox 后图片可正常读取。
该问题在普通用户直接上传的图片上可复现,不是第三方卡片、合并转发或跨租户图片权限问题;同一发送者、同类普通图片在另一个可正常工作的 bot 上能够读取。
复现步骤
- 为 bot 开启
sandbox。
- 在飞书话题中向 bot 直接发送一张普通图片。
- Agent 收到类似以下附件提示:
<attachments hint="使用 Read 工具查看">
<image n="1" path="~/.botmux/data/attachments/<appId>/<messageId>/<image>.jpg" />
</attachments>
- 让 Agent 读取该路径。
实际结果
Agent 报告:
- prompt 中给出的
/home/<user>/.botmux/data/attachments/...jpg 不存在;
- 尝试宿主机 canonical home(例如
/data00/home/<user>/...)后仍不存在;
- 在当前 botmux 数据目录中按 message ID / 文件名搜索也找不到附件。
关闭 sandbox 后,同类图片可以读取。
期望结果
开启 sandbox 时,Agent 仍应能以只读方式访问当前 bot 自己的附件目录:
<SESSION_DATA_DIR>/attachments/<currentAppId>/<messageId>/...
如果同时启用 read isolation,应隐藏其他 bot 的附件,但正确只读放行当前 bot 的 attachments/<appId>/ bucket。
初步判断
可能是 sandbox namespace 中附件目录未正确映射,或 daemon 下载附件使用的 dataDir 与 sandbox/CLI 可见的 SESSION_DATA_DIR 不一致。建议重点检查:
prepareSandbox() 的只读文件系统与附件目录 mount;
sandbox + readIsolation 下 ownReadOnlyPaths / readonlyRoots 的放行顺序;
- symlink/canonical home(如
/home/... → /data00/home/...)场景;
- daemon 下载路径与 worker 环境变量
SESSION_DATA_DIR 是否一致;
- pty/tmux/不同 CLI adapter 的组合。
影响
开启 sandbox 的 bot 无法处理用户上传的图片。为了读取图片而关闭 sandbox 会降低隔离安全性,因此不应作为长期规避方案。
环境信息
- 复现日期:2026-07-23
- botmux master 检查基线:
b12edef8473e4c6e06848372c92cc65239cb75f5
- CLI:TRAE/TraeX(根据复现会话卡片)
- sandbox:开启
- backend、botmux 实际版本、是否同时开启 readIsolation:待复现方补充
建议补充的诊断信息
复现机器可补充(注意脱敏,不要提交 token/appSecret):
botmux --version
- backend 类型(pty/tmux/riff/remote/container)
readIsolation 是否开启
- daemon 日志中的
Downloaded image ... / Failed to download image ...
- 宿主机上日志所示附件路径是否存在
问题描述
开启
sandbox后,飞书消息中的图片附件路径会正常注入 Agent prompt,但 Agent 在 sandbox 内访问该路径时文件不存在,导致无法读取图片。关闭 sandbox 后图片可正常读取。该问题在普通用户直接上传的图片上可复现,不是第三方卡片、合并转发或跨租户图片权限问题;同一发送者、同类普通图片在另一个可正常工作的 bot 上能够读取。
复现步骤
sandbox。实际结果
Agent 报告:
/home/<user>/.botmux/data/attachments/...jpg不存在;/data00/home/<user>/...)后仍不存在;关闭 sandbox 后,同类图片可以读取。
期望结果
开启 sandbox 时,Agent 仍应能以只读方式访问当前 bot 自己的附件目录:
如果同时启用 read isolation,应隐藏其他 bot 的附件,但正确只读放行当前 bot 的
attachments/<appId>/bucket。初步判断
可能是 sandbox namespace 中附件目录未正确映射,或 daemon 下载附件使用的 dataDir 与 sandbox/CLI 可见的
SESSION_DATA_DIR不一致。建议重点检查:prepareSandbox()的只读文件系统与附件目录 mount;sandbox + readIsolation下ownReadOnlyPaths/readonlyRoots的放行顺序;/home/...→/data00/home/...)场景;SESSION_DATA_DIR是否一致;影响
开启 sandbox 的 bot 无法处理用户上传的图片。为了读取图片而关闭 sandbox 会降低隔离安全性,因此不应作为长期规避方案。
环境信息
b12edef8473e4c6e06848372c92cc65239cb75f5建议补充的诊断信息
复现机器可补充(注意脱敏,不要提交 token/appSecret):
botmux --versionreadIsolation是否开启Downloaded image .../Failed to download image ...