症状
Agent 在尝试执行特定操作时被系统阻止,错误信息包含 permission denied、access denied 或 unauthorized。表现为:
- Agent 能够正常生成操作计划,但在实际执行时失败。
- 错误集中在文件读写、shell 命令执行或外部 API 调用环节。
- 同一操作在手动执行时(使用相同凭据)可以成功完成。
常见原因
- 沙箱权限配置过严:Agent 运行环境的沙箱策略限制了必要的系统调用或文件路径访问。
- 文件系统权限:Agent 进程的运行用户对目标目录或文件没有读写权限。
- API 凭据作用域:提供给 Agent 的 API 密钥或 OAuth Token 的权限范围不包含所需操作。
- 网络策略阻止:防火墙或网络安全组规则阻止了 Agent 向外部服务发起请求。
排查步骤
- 查看 Agent 执行日志中的完整错误信息,确认被拒绝的具体操作类型(文件、命令、网络)和目标路径。
- 检查 Agent 进程的运行用户和用户组,使用
ls -la或stat确认目标文件的权限位是否允许该用户操作。 - 审查沙箱配置文件(如 Docker 的 seccomp profile、AppArmor 策略或 nsjail 配置),确认所需的系统调用和路径是否在白名单中。
- 验证 Agent 使用的 API 凭据的权限范围,在供应商控制台确认 Token 的 scope 列表。
- 使用 Agent 的运行身份手动执行被拒绝的操作,复现问题并精确定位权限缺口。
预防
- 遵循最小权限原则:为 Agent 分配刚好满足功能需求的权限,定期审查并回收多余权限。
- 在 Agent 启动时自动运行权限预检脚本,验证所有必要的路径和服务是否可达。
- 将权限配置纳入版本控制,与 Agent 的功能定义同步更新。
- 建立权限变更审计日志,记录每次权限调整的原因、时间和操作人。