当拒绝 env-var 值时, deploy-managed-agent.sh 会报告成功(退出代码为 0, 体为空)
作者: akhilesharora创建于 2026年5月29日更新于 2026年5月29日
`deploy-managed-agent.sh` 在 `set -euo pipefail` 环境下运行,但拒绝的环境变量替换不会停止它:部署以 0 退出,而不是失败。`yaml2json` 的 `SAFE` 允许列表(`^[A-Za-z0-9._/:@-]*$`)不包括 `?`,`&`,`=`,因此携带 `?token=` 查询字符串的连接器 URL 通过 `sys.exit` 被拒绝。这种拒绝应该终止部署。但是,失败的赋值在命令替换中嵌套了三层 - `json=$(yaml2json ...)` 在 `json=$(resolve_manifest ...)` 中,`json=$(create_agent ...)` 中 - 而 `set -e` 不会将命令替换中的失败赋值传播到外部。因此,`resolve_manifest` 继续使用空的 `json`,部署报告成功,但没有任何内容。
内容来源: anthropics/claude-for-legal