with one click
cc-security-patterns
// AI Agent 安全設計模式 — 基於 Claude Code 七層縱深防禦架構的逆向分析。Use when: 設計工具安全機制、實作命令過濾、建構權限模型、設計 sandbox。
// AI Agent 安全設計模式 — 基於 Claude Code 七層縱深防禦架構的逆向分析。Use when: 設計工具安全機制、實作命令過濾、建構權限模型、設計 sandbox。
Use when writing, reviewing, or deciding what to post on Threads. Also triggers when planning post-viral strategy or checking posting timing. Runs pre-publish checks based on Meta algorithm patents.
Use when predicting Threads post performance, analyzing post history patterns, estimating engagement ceiling for a draft, or deciding what content type to write next. Works with or without personal data — uses darkseoking benchmark as fallback.
Claude Code 專案配置審計。觸發:review/優化 CLAUDE.md、skills、settings、定期清洗累積內容、新專案上線前檢查。
Agent 配置設計指南 — 基於 Claude Code 6 個 built-in agent 的逆向分析。Use when: 設計新 agent、優化現有 agent prompt、決定工具/模型配置、撰寫 dispatch prompt。
AI Agent 成本工程 — 基於 Claude Code 的成本追蹤、prompt cache 最佳化、token 預算控制逆向分析。Use when: 優化 token 消耗、設計成本控制機制、分析 cache 效率、選擇模型配置。
Harness Engineering 設計模式 — 基於 Claude Code 原始碼逆向分析的 12 條可遷移原則。Use when: 設計 agent 系統架構、實作 tool orchestration、設計 context 管理策略、建構 agent loop。
| name | cc-security-patterns |
| description | AI Agent 安全設計模式 — 基於 Claude Code 七層縱深防禦架構的逆向分析。Use when: 設計工具安全機制、實作命令過濾、建構權限模型、設計 sandbox。 |
| version | 202603 |
| context | fork |
基於 Claude Code v2.1.88 的安全機制逆向分析(bashSecurity 2592 行 + bashPermissions 2621 行 + 3 份 readOnlyValidation)。
[1] Schema Validation (Zod) — 型別正確嗎
[2] Custom validateInput() — 業務邏輯合理嗎
[3] Input Sanitization — 有危險字元嗎
[4] PreToolUse Hooks — 外部規則要攔嗎
[5] Permission Resolution — 使用者授權了嗎
[6] Actual Execution — 最後才執行
[7] PostToolUse Hooks — 執行後通知/記錄
原則:每層只問「能否拒絕」。拒絕即停。執行邏輯永遠在最後一層。
Claude Code 安全系統最重要的威脅模型:harness 的 parser 和實際執行環境的 parser 對同一個字串有不同理解。
shell-quote 解析: FOO=bar rm -rf / → 三個 token
bash 實際執行: FOO=bar rm -rf / → 設定環境變數後執行 rm
23 個 Bash validator 中超過一半是針對這種差異。
防禦原則:
TREE_SITTER_BASH feature flag)取代字串解析Claude Code 的 Bash 安全:
例:git 命令的 -S 旗標
-S 在 git log 中是安全的(搜尋 diff)
-S 在 git diff 中可能不安全(接受程式碼作為引數)
→ 旗標白名單需要 per-command 定義
// Allow 路徑:只剝除非白名單的 env vars
const sanitized = stripNonWhitelistedEnvVars(command, SAFE_ENV_VARS)
// Deny 路徑:剝除所有 env vars(更激進)
const sanitized = stripAllEnvVars(command)
原因:FOO=bar denied_cmd 可以繞過基於命令名稱的 deny 檢查。Deny 時全部剝除,再檢查剝除後的命令。
| 層 | 檔案 | 行數 | 覆蓋 |
|---|---|---|---|
| Bash | readOnlyValidation.ts | 1990 | Unix shell 命令 |
| Shell 共用庫 | readOnlyCommandValidation.ts | 1893 | 跨 shell 通用邏輯 |
| PowerShell | readOnlyValidation.ts | 1823 | Windows PS 命令 |
每份都獨立維護一套白名單,因為不同 shell 的命令語義差異太大。
| 平台 | 技術 | 特點 |
|---|---|---|
| Linux | bubblewrap (bwrap) | namespace 隔離、唯讀 bind mount |
| macOS | sandbox-exec | seatbelt profile,Apple 原生 |
兩套路徑語義差異(已知問題 #30067):
~/project/**)/home/user/project)裸 repo 逃脫防護:偵測 .git 是檔案(非目錄)時,追蹤 gitdir: 指向的實際 repo 路徑。
// 5 個並發決策源,ResolveOnce 保護
const decision = await ResolveOnce.race([
classifierDecision, // AI 分類器
hookDecision, // 使用者 hook
ruleDecision, // 預設規則
channelDecision, // 手機批准
interactiveDecision, // 終端 UI
])
第一個回應的決策源贏,其餘取消。
cyberRiskInstruction.ts 的設計:
詳見 references/validator-rules.md 和 references/threat-model.md。