Aiko Chat
安全与权限
Diff Approval / Permission Rules / YOLO Mode / Custom Agents 全套护栏
Aiko Chat 写代码不靠 prompt 自觉,靠机器化护栏。本页讲清四层保护机制。
1. Diff Approval
所有文件改动落地前 unified diff 预览 + 一键 approve / reject:
- Edit / Write 工具卡片内嵌 inline diff preview
- 点开扩展为 full-panel 高保真 diff(Shiki 语法高亮)
- 多 diff 并发支持
- Subagent 改动可独立 approve / reject(不影响主会话)
2. Permission Rules
Claude Code CLI 兼容的 allow/deny 规则文件:
// .claude/settings.json
{
"permissions": {
"allow": [
"Bash(git:*)",
"Bash(npm:test:*)",
"Edit(src/**/*.ts)",
"Edit(tests/**/*)"
],
"deny": [
"Bash(rm:-rf:*)",
"Bash(git:push:--force:*)",
"Edit(.env)",
"Edit(secrets/**)"
]
}
}- 模式匹配:
Tool(pattern)语法 - Permission prompts 内置 "Always allow" / "Always deny",选了就写回 settings 文件
- 项目级
./.claude/settings.json+ 用户级~/.claude/settings.json
3. YOLO Mode
一键 auto-approve 所有 tool calls(除 plan approval 和 question)。
- Ephemeral —— 会话清空时重置,不持久化
- 适合:跑确定性大批量任务(如
aiko-apply-dev跑 §1-§5) - 不适合:生产代码库初次接入
4. Per-Panel Permission Mode
每个 panel 可独立设 permission mode,不被全局默认影响。多人多 Agent 并发跑不互相污染。
5. Subagent-Scoped Accept All
点 subagent 的 "Accept all edits":
- 仅该 subagent 自动批准 —— global session mode 不变
- 每个 subagent 独立 auto-approve
- 主会话与其他 subagent 不受影响
6. Custom Agents / Skills / Hooks
完整支持 Claude Code 原生扩展点:
| 扩展点 | 项目级 | 用户级 |
|---|---|---|
| Custom Agents | .claude/agents/*.md | ~/.claude/agents/*.md |
| Custom Skills | .claude/skills/* | ~/.claude/skills/* |
| Hooks | .claude/hooks/* | ~/.claude/hooks/* |
| Commands | .claude/commands/* | ~/.claude/commands/* |
Hook 是 shell 脚本,在 tool 调用 / pre-commit / session start 等事件触发。可以:
- pre-commit 强制跑
aiko-validate - pre-tool-use 拒绝某些路径写入
- post-tool-use 自动 lint
- on-session-start 注入项目 context
7. 与 SDD 三层门禁的关系
Aiko Chat 的 permission rules 与 SDD 的三层门禁是叠加关系:
| 层 | 时机 | 工具 | 防什么 |
|---|---|---|---|
| Aiko Chat permission | 工具调用前 | settings.json allow/deny | AI 误用工具 / 改不该改的文件 |
| SDD 本地 pre-commit | git commit | .pre-commit-config.yaml → aiko-validate + hygiene | 制品违规 / lint / secret 泄露 |
| SDD CI | MR / push | GitLab / GitHub CI | validate + L2/L3 E2E + pipeline check |
任何一层挂掉都直接拒绝下一步,不可绕过。
安全最佳实践
- 生产代码库:禁用 YOLO;permission
allow列白名单,不写通配 - 新仓库试用:可开 YOLO + 让 Aiko Chat 跑
aiko-apply-dev端到端 - secret 防护:
deny必含Edit(.env)Edit(secrets/**)Bash(git:config*) - 危险操作:
Bash(rm:-rf:*)/Bash(git:push:--force:*)/Bash(git:reset:--hard:*)默认 deny - 审计:Hook 写 audit log,session 结束自动归档