保障HermesAgent终端命令调用安全需五步:一、启用命令审批机制;二、限制可执行命令白名单;三、启用容器化隔离执行;四、禁用交互式Shell会话;五、配置命令超时与资源限额。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在使用 HermesAgent 过程中需要调用终端命令执行工具,但对权限控制、命令审批与安全边界缺乏了解,则可能面临未授权操作、敏感文件误删或系统配置被篡改等风险。以下是保障终端命令调用安全的关键须知:
一、启用命令审批机制
该机制强制所有终端命令在实际执行前进入人工确认流程,防止脚本自动触发高危操作,适用于生产环境或共享设备场景。
1、编辑主配置文件:nano ~/.hermes/config.yaml
2、在 tools: 区块下定位 shell: 子项
3、将 approval_required: 的值设为 true
4、保存退出后执行 hermes restart 使配置生效
二、限制可执行命令白名单
通过预设允许运行的命令列表,从根本上阻断任意 shell 命令注入,适用于仅需固定运维动作(如日志清理、服务状态检查)的轻量部署。
1、在 ~/.hermes/config.yaml 的 shell: 配置段中添加 allowed_commands:
2、填入具体命令名,例如:- ls、- df、- systemctl
3、确保不包含通配符或路径参数,仅保留基础命令二进制名称
4、重启 HermesAgent 后,任何未列于白名单的命令将被直接拒绝并记录审计日志
三、启用容器化隔离执行
此方式将每条终端命令置于临时轻量容器中运行,与宿主机文件系统、进程空间完全隔离,避免命令副作用影响主系统稳定性。
1、确认系统已安装 podman 或 docker 并可无 root 权限调用
2、在 config.yaml 的 shell: 下设置 isolation_mode: container
3、指定基础镜像,例如:base_image: "alpine:latest"
4、保存配置并运行 hermes doctor --check shell 验证容器运行时连通性
四、禁用交互式 Shell 会话
关闭 sh、bash、zsh 等交互式解释器的启动能力,防止通过终端工具获得持久化命令行访问权限,显著降低横向移动风险。
1、打开 ~/.hermes/config.yaml
2、在 shell: 区块中添加或修改字段:disable_interactive: true
3、该设置将拦截所有含 -i、--interactive 或启动子 shell 的请求
4、执行 hermes update tools 重载工具模块
五、配置命令超时与资源限额
为防止无限循环、死锁或资源耗尽型命令长期驻留,需对单次命令执行施加时间与内存硬性约束,保障 HermesAgent 主进程持续可用。
1、在 config.yaml
2、于 shell: 下添加 timeout_seconds: 30 和 memory_limit_mb: 256
3、若命令超出任一阈值,进程将被强制终止并返回错误码 137
4、所有超限事件将写入 ~/.hermes/logs/shell-audit.log


















