harahara
安全安全与权限

安全与权限

hara 如何做到默认安全 —— 批准模式、shell 沙箱、命令规则,以及不可信内容的处理。

hara 在你的机器上、用你的工具运行,因此它从设计上就 默认安全,并始终让人保持在回路中。

批准模式

模式行为
suggest (默认)在编辑文件或运行命令前询问
auto-edit自由编辑文件,但运行 shell 命令前仍会询问
full-auto无需询问直接运行(-y、cron 和网关会用到)
plan只读调研——模型先提出完整计划,经你批准后才动手

--approval/approvalhara config set approval <mode> 设置它——在 TUI 里也可以按 shift+tab 循环切换。

计划模式(plan)

plan 模式下 agent 只拿到只读工具(read / grep / glob / web),外加一个 exit_plan。 它可以自由调研;你提问,它就像平常一样回答。当且仅当它形成了一份完整可执行的计划时, 由模型自己调用 exit_plan:计划渲染成带边框的 ╭─ Plan 块,并弹出选择器——

  • Yes, and auto-apply edits —— 切到 auto-edit,自动执行计划
  • Yes, approve each edit —— 切到 suggest,逐步确认执行
  • No, keep planning —— 留在计划模式继续打磨

没产出计划的调研回合会安静地回到输入框,仍处于计划模式——不会反复追问。 (这套握手对齐 Claude Code 的 ExitPlanMode 与 codex 的 proposed-plan cell。)

命令规则

用一个 permissions.json 精确锁定哪些 shell 命令可无人值守运行(allow / deny, 外加即使在 suggest 模式下也会自动运行的只读命令):

hara permissions --init             # 脚手架生成全局 ~/.hara/permissions.json
hara permissions --init --project   # 脚手架生成 .hara/permissions.json(项目范围)

项目规则默认不受信任:可以增加 deny 或关闭只读自动运行,但不能新增 allow、也不能开启 自动运行。只有设置 HARA_TRUST_PROJECT_CONFIG=1,审查过的仓库才可授予权限。

Shell 沙箱(macOS)

限制 shell 能触及的范围:

hara --sandbox workspace-write   # 写入限制在工作目录内
hara --sandbox read-only         # 完全不允许写

不可信内容

hara 从外部世界拉取的输出 —— 网页抓取、文件内容 —— 会被包裹并 去毒化, 这样被注入的"忽略你的指令"之类文本就无法劫持 agent。子 agent 默认只读运行, 堵住了绕过批准关卡的路径;computer(屏幕控制)工具永远不会被自动批准。

密钥

API key 和 token 以 0600 权限存储(~/.hara/config.json、OAuth token 文件)。 在进入普通文件工具批准前,敏感路径就会被拒绝:.env/.env.*、凭据库、私钥和 Hara 私有 状态不能被读取、搜索、编辑、通过 @文件 注入、索引、checkpoint 或作为网关附件发送; .env.example.env.sample.env.template 仍可读取。

子进程环境默认清理,疑似秘密的输出会脱敏。在 macOS 上,Hara 还使用 Seatbelt 阻止任意 shell 读取已经存在的受保护路径。Linux/Windows 仍有静态准入和内置工具检查,但任意 shell 代码并非 内核级安全沙箱。HARA_ALLOW_SENSITIVE_FILES=1 是只对本次启动生效的显式逃生开关。MCP server 和外部 coding agent 位于该边界之外,属于可信扩展,因此每次需要确认;审查过的自动化可显式设置 HARA_ALLOW_TRUSTED_EXTENSIONS=1

上报漏洞

安全问题在仓库的 SECURITY.md 里跟踪 —— 请在那里私下上报,而不是提一个公开 issue。

Was this helpful?
harahara
A product by Nanhara · Apache-2.0 · v0.139.0

© 2026 Nanhara Technologies