failproofai 0.0.6-beta.1 → 0.0.6-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.failproofai/policies/review-policies.mjs +4 -3
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0~kmh8w._.js → [root-of-the-server]__096k.db._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0rh.18_._.js → [root-of-the-server]__0kyh86x._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
- package/.next/standalone/.next/static/chunks/{0gbf4cphy8ksq.js → 0-dm_9a6nsc2l.js} +1 -1
- package/.next/standalone/.next/static/chunks/{12~yi9oj8av8p.js → 01pmw1-asbek~.js} +2 -2
- package/.next/standalone/.next/static/chunks/{0v.yd0kg_ld3r.js → 051m32nx~n5yr.js} +1 -1
- package/.next/standalone/.next/static/chunks/{09_k80d~cq2wg.js → 0a-yctdwn368y.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0bvhsa6zva2o..js → 0ksdlt_1hucdm.js} +1 -1
- package/.next/standalone/.next/static/chunks/{01b~z8f1ws0rk.js → 0l-mu4okl-cj1.js} +1 -1
- package/.next/standalone/.next/static/chunks/{08t08igdql9yt.js → 0mazj-p-~2kc6.js} +1 -1
- package/.next/standalone/.next/static/chunks/0qakntsrpc~1j.js +6 -0
- package/.next/standalone/.next/static/chunks/{03rz6ykw-a2xi.js → 156zca6aewyr-.js} +1 -1
- package/.next/standalone/CHANGELOG.md +18 -0
- package/.next/standalone/bin/failproofai.mjs +91 -4
- package/.next/standalone/dist/cli.mjs +1156 -55
- package/.next/standalone/docs/ar/built-in-policies.mdx +140 -103
- package/.next/standalone/docs/ar/custom-policies.mdx +72 -72
- package/.next/standalone/docs/ar/examples.mdx +86 -33
- package/.next/standalone/docs/ar/getting-started.mdx +82 -29
- package/.next/standalone/docs/built-in-policies.mdx +3 -3
- package/.next/standalone/docs/de/built-in-policies.mdx +97 -60
- package/.next/standalone/docs/de/custom-policies.mdx +56 -56
- package/.next/standalone/docs/de/examples.mdx +72 -18
- package/.next/standalone/docs/de/getting-started.mdx +72 -20
- package/.next/standalone/docs/es/built-in-policies.mdx +91 -54
- package/.next/standalone/docs/es/custom-policies.mdx +55 -55
- package/.next/standalone/docs/es/examples.mdx +73 -19
- package/.next/standalone/docs/es/getting-started.mdx +72 -20
- package/.next/standalone/docs/fr/built-in-policies.mdx +99 -62
- package/.next/standalone/docs/fr/custom-policies.mdx +51 -51
- package/.next/standalone/docs/fr/examples.mdx +78 -24
- package/.next/standalone/docs/fr/getting-started.mdx +65 -13
- package/.next/standalone/docs/he/built-in-policies.mdx +139 -99
- package/.next/standalone/docs/he/custom-policies.mdx +75 -75
- package/.next/standalone/docs/he/examples.mdx +87 -33
- package/.next/standalone/docs/he/getting-started.mdx +84 -33
- package/.next/standalone/docs/hi/built-in-policies.mdx +203 -166
- package/.next/standalone/docs/hi/custom-policies.mdx +71 -70
- package/.next/standalone/docs/hi/examples.mdx +90 -36
- package/.next/standalone/docs/hi/getting-started.mdx +80 -27
- package/.next/standalone/docs/i18n/README.ar.md +69 -69
- package/.next/standalone/docs/i18n/README.de.md +46 -46
- package/.next/standalone/docs/i18n/README.es.md +42 -42
- package/.next/standalone/docs/i18n/README.fr.md +39 -39
- package/.next/standalone/docs/i18n/README.he.md +83 -83
- package/.next/standalone/docs/i18n/README.hi.md +69 -69
- package/.next/standalone/docs/i18n/README.it.md +72 -72
- package/.next/standalone/docs/i18n/README.ja.md +71 -71
- package/.next/standalone/docs/i18n/README.ko.md +52 -52
- package/.next/standalone/docs/i18n/README.pt-br.md +44 -44
- package/.next/standalone/docs/i18n/README.ru.md +66 -66
- package/.next/standalone/docs/i18n/README.tr.md +82 -83
- package/.next/standalone/docs/i18n/README.vi.md +70 -71
- package/.next/standalone/docs/i18n/README.zh.md +51 -51
- package/.next/standalone/docs/it/built-in-policies.mdx +115 -78
- package/.next/standalone/docs/it/custom-policies.mdx +69 -69
- package/.next/standalone/docs/it/examples.mdx +93 -39
- package/.next/standalone/docs/it/getting-started.mdx +73 -21
- package/.next/standalone/docs/ja/built-in-policies.mdx +155 -118
- package/.next/standalone/docs/ja/custom-policies.mdx +71 -71
- package/.next/standalone/docs/ja/examples.mdx +76 -22
- package/.next/standalone/docs/ja/getting-started.mdx +65 -13
- package/.next/standalone/docs/ko/built-in-policies.mdx +103 -66
- package/.next/standalone/docs/ko/custom-policies.mdx +67 -67
- package/.next/standalone/docs/ko/examples.mdx +87 -33
- package/.next/standalone/docs/ko/getting-started.mdx +61 -9
- package/.next/standalone/docs/pt-br/built-in-policies.mdx +72 -35
- package/.next/standalone/docs/pt-br/custom-policies.mdx +56 -56
- package/.next/standalone/docs/pt-br/examples.mdx +78 -24
- package/.next/standalone/docs/pt-br/getting-started.mdx +64 -12
- package/.next/standalone/docs/ru/built-in-policies.mdx +135 -98
- package/.next/standalone/docs/ru/custom-policies.mdx +82 -81
- package/.next/standalone/docs/ru/examples.mdx +77 -22
- package/.next/standalone/docs/ru/getting-started.mdx +74 -22
- package/.next/standalone/docs/tr/built-in-policies.mdx +126 -89
- package/.next/standalone/docs/tr/custom-policies.mdx +59 -60
- package/.next/standalone/docs/tr/examples.mdx +97 -42
- package/.next/standalone/docs/tr/getting-started.mdx +75 -23
- package/.next/standalone/docs/vi/built-in-policies.mdx +116 -81
- package/.next/standalone/docs/vi/custom-policies.mdx +68 -68
- package/.next/standalone/docs/vi/examples.mdx +93 -38
- package/.next/standalone/docs/vi/getting-started.mdx +74 -22
- package/.next/standalone/docs/zh/built-in-policies.mdx +117 -82
- package/.next/standalone/docs/zh/custom-policies.mdx +49 -49
- package/.next/standalone/docs/zh/examples.mdx +90 -36
- package/.next/standalone/docs/zh/getting-started.mdx +73 -21
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/auth/login.ts +104 -0
- package/.next/standalone/src/auth/logout.ts +50 -0
- package/.next/standalone/src/auth/token-store.ts +64 -0
- package/.next/standalone/src/hooks/builtin-policies.ts +27 -21
- package/.next/standalone/src/hooks/handler.ts +35 -15
- package/.next/standalone/src/relay/daemon.ts +362 -0
- package/.next/standalone/src/relay/pid.ts +76 -0
- package/.next/standalone/src/relay/queue.ts +225 -0
- package/bin/failproofai.mjs +91 -4
- package/dist/cli.mjs +1156 -55
- package/package.json +1 -1
- package/src/auth/login.ts +104 -0
- package/src/auth/logout.ts +50 -0
- package/src/auth/token-store.ts +64 -0
- package/src/hooks/builtin-policies.ts +27 -21
- package/src/hooks/handler.ts +35 -15
- package/src/relay/daemon.ts +362 -0
- package/src/relay/pid.ts +76 -0
- package/src/relay/queue.ts +225 -0
- package/.next/standalone/.next/static/chunks/0wlyoif4_kj_t.js +0 -6
- /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → r-wX0MuAfCjbhJm3phQc8}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → r-wX0MuAfCjbhJm3phQc8}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → r-wX0MuAfCjbhJm3phQc8}/_ssgManifest.js +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: はじめに
|
|
3
|
-
description: "failproofai
|
|
3
|
+
description: "failproofaiをインストールし、ポリシーを有効化して、エージェントを安定して動かしましょう"
|
|
4
4
|
icon: rocket
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 必要要件
|
|
8
8
|
|
|
9
9
|
- **Node.js** >= 20.9.0
|
|
10
10
|
- **Bun** >= 1.3.0(オプション — ソースからビルドする場合のみ必要)
|
|
@@ -31,13 +31,13 @@ bun add -g failproofai
|
|
|
31
31
|
|
|
32
32
|
<Steps>
|
|
33
33
|
<Step title="ポリシーを有効化する">
|
|
34
|
-
|
|
34
|
+
ポリシーは、エージェントのツール呼び出しの前後に実行されるルールです。破壊的なコマンドやシークレットの漏洩、その他の障害パターンを被害が発生する前に検出します。
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
37
|
failproofai policies --install
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
これにより、Claude Code の `settings.json` にフックエントリが書き込まれます。単一プロジェクト向けにインストールしたり、特定のポリシーを選択したりすることもできます。
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
failproofai policies --install --scope project
|
|
@@ -49,17 +49,17 @@ bun add -g failproofai
|
|
|
49
49
|
failproofai policies
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
すべてのポリシー、その有効・無効の状態、設定済みのパラメータを表示します。
|
|
53
53
|
</Step>
|
|
54
54
|
<Step title="ダッシュボードを起動する">
|
|
55
55
|
```bash
|
|
56
56
|
failproofai
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
`http://localhost:8020`
|
|
59
|
+
`http://localhost:8020` にローカルダッシュボードを開きます。セッションの閲覧、ツール呼び出しの確認、ポリシーの管理が行えます。
|
|
60
60
|
</Step>
|
|
61
61
|
<Step title="エージェントを実行する">
|
|
62
|
-
通常通り Claude Code を起動してください。エージェントが危険な操作を試みた場合、failproofai
|
|
62
|
+
通常通り Claude Code を起動してください。エージェントが危険な操作を試みた場合、failproofai が自動的に介入します。無人で実行したまま放置し、ダッシュボードで何が起きたかを後から確認できます。
|
|
63
63
|
</Step>
|
|
64
64
|
</Steps>
|
|
65
65
|
|
|
@@ -75,18 +75,70 @@ Claude Code → failproofai --hook PreToolUse → reads stdin JSON
|
|
|
75
75
|
writes decision to stdout
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
各ポリシーは以下の3つの決定のいずれかを返します。
|
|
79
79
|
|
|
80
80
|
- **allow** — エージェントは通常通り処理を続行する
|
|
81
81
|
- **deny** — アクションがブロックされ、エージェントにその理由が通知される
|
|
82
|
-
- **instruct** —
|
|
82
|
+
- **instruct** — エージェントのプロンプトに追加のコンテキストが付与される
|
|
83
83
|
|
|
84
84
|
<Note>
|
|
85
|
-
|
|
85
|
+
ポリシーはローカルプロセス内で実行されます。リモートサービスには何も送信されません。
|
|
86
86
|
</Note>
|
|
87
87
|
|
|
88
88
|
---
|
|
89
89
|
|
|
90
|
+
## 規約ベースのポリシーでチームポリシーを設定する
|
|
91
|
+
|
|
92
|
+
チーム全体で品質基準を素早く確立するには、`.failproofai/policies/` の規約を活用するのが最速です。このディレクトリにポリシーファイルを配置するだけで自動的に読み込まれます — フラグも設定変更もインストールコマンドも不要です。
|
|
93
|
+
|
|
94
|
+
<Steps>
|
|
95
|
+
<Step title="ポリシーディレクトリを作成する">
|
|
96
|
+
```bash
|
|
97
|
+
mkdir -p .failproofai/policies
|
|
98
|
+
```
|
|
99
|
+
</Step>
|
|
100
|
+
<Step title="ポリシーファイルを追加する">
|
|
101
|
+
サンプルのスターターファイルをコピーするか、独自に作成してください。
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
cp node_modules/failproofai/examples/convention-policies/*.mjs .failproofai/policies/
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
または新しいファイルを作成する場合:
|
|
108
|
+
|
|
109
|
+
```js
|
|
110
|
+
// .failproofai/policies/team-policies.mjs
|
|
111
|
+
import { customPolicies, allow, deny, instruct } from "failproofai";
|
|
112
|
+
|
|
113
|
+
customPolicies.add({
|
|
114
|
+
name: "test-before-commit",
|
|
115
|
+
match: { events: ["PreToolUse"] },
|
|
116
|
+
fn: async (ctx) => {
|
|
117
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
118
|
+
if (/git\s+commit/.test(ctx.toolInput?.command ?? "")) {
|
|
119
|
+
return instruct("Run tests before committing.");
|
|
120
|
+
}
|
|
121
|
+
return allow();
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
```
|
|
125
|
+
</Step>
|
|
126
|
+
<Step title="gitにコミットする">
|
|
127
|
+
```bash
|
|
128
|
+
git add .failproofai/policies/
|
|
129
|
+
git commit -m "Add team quality policies"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
failproofai をインストールしているすべてのチームメンバーが、これらのポリシーを自動的に受け取ります。開発者ごとのセットアップは不要です。
|
|
133
|
+
</Step>
|
|
134
|
+
</Steps>
|
|
135
|
+
|
|
136
|
+
<Tip>
|
|
137
|
+
`.failproofai/policies/` をリポジトリにコミットすることで、チーム全体が同じ基準を共有できます。チームが新たな障害パターンを発見したらポリシーを追加してプッシュするだけで、全員が次の `git pull` 時に更新を受け取れます。時間をかけてこれらのポリシーを積み重ねることで、継続的に改善される生きた品質基準が生まれます。
|
|
138
|
+
</Tip>
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
90
142
|
## データの保存場所
|
|
91
143
|
|
|
92
144
|
すべての設定とログはお使いのマシン上に保存されます。
|
|
@@ -97,7 +149,7 @@ Claude Code → failproofai --hook PreToolUse → reads stdin JSON
|
|
|
97
149
|
| `~/.failproofai/hook-activity.jsonl` | フック実行履歴 |
|
|
98
150
|
| `~/.failproofai/hook.log` | カスタムフックエラーのデバッグログ |
|
|
99
151
|
| `.failproofai/policies-config.json` | プロジェクト別設定(コミット対象) |
|
|
100
|
-
| `.failproofai/policies-config.local.json` |
|
|
152
|
+
| `.failproofai/policies-config.local.json` | 個人用上書き設定(gitignore対象) |
|
|
101
153
|
|
|
102
154
|
---
|
|
103
155
|
|
|
@@ -120,11 +172,11 @@ failproofai policies --uninstall
|
|
|
120
172
|
</Card>
|
|
121
173
|
|
|
122
174
|
<Card title="組み込みポリシー" icon="shield" href="/ja/built-in-policies">
|
|
123
|
-
|
|
175
|
+
パラメータ付きの全26ポリシー
|
|
124
176
|
</Card>
|
|
125
177
|
|
|
126
178
|
<Card title="カスタムポリシー" icon="code" href="/ja/custom-policies">
|
|
127
|
-
JavaScript
|
|
179
|
+
JavaScriptで独自のポリシーを作成する
|
|
128
180
|
</Card>
|
|
129
181
|
|
|
130
182
|
<Card title="エージェントモニター" icon="chart-line" href="/ja/dashboard">
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: 내장 정책
|
|
3
|
-
description: "일반적인 에이전트
|
|
3
|
+
description: "일반적인 에이전트 오류 패턴을 감지하는 30가지 내장 정책"
|
|
4
4
|
icon: shield
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
failproofai
|
|
7
|
+
failproofai에는 일반적인 에이전트 오류 패턴을 감지하는 30가지 내장 정책이 포함되어 있습니다. 각 정책은 특정 훅 이벤트 유형 및 도구 이름에 따라 실행됩니다. 9가지 정책은 코드를 작성하지 않고도 동작을 조정할 수 있는 파라미터를 제공합니다. 4가지 워크플로우 정책은 Claude가 중단하기 전에 커밋 → 푸시 → PR → CI 파이프라인을 완료하도록 강제합니다.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## 개요
|
|
12
12
|
|
|
13
|
-
정책은
|
|
13
|
+
정책은 다음과 같은 카테고리로 분류됩니다:
|
|
14
14
|
|
|
15
15
|
| 카테고리 | 정책 | 훅 유형 |
|
|
16
16
|
|----------|----------|-----------|
|
|
@@ -21,37 +21,38 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
21
21
|
| [Git](#git) | block-push-master, block-work-on-main, block-force-push, warn-git-amend, warn-git-stash-drop, warn-all-files-staged | PreToolUse |
|
|
22
22
|
| [데이터베이스](#database) | warn-destructive-sql, warn-schema-alteration | PreToolUse |
|
|
23
23
|
| [경고](#warnings) | warn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-install | PreToolUse |
|
|
24
|
+
| [패키지 매니저](#package-managers) | prefer-package-manager | PreToolUse |
|
|
24
25
|
| [워크플로우](#workflow) | require-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-ci-green-before-stop | Stop |
|
|
25
26
|
|
|
26
|
-
- **`block-`** —
|
|
27
|
-
- **`warn-`** — 에이전트가 스스로 수정할 수 있도록 추가
|
|
28
|
-
- **`sanitize-`** —
|
|
27
|
+
- **`block-`** — 에이전트가 계속 진행하지 못하도록 차단합니다.
|
|
28
|
+
- **`warn-`** — 에이전트가 스스로 수정할 수 있도록 추가 맥락 정보를 제공합니다.
|
|
29
|
+
- **`sanitize-`** — 에이전트가 도구 출력을 받기 전에 민감한 데이터를 제거합니다.
|
|
29
30
|
- **`require-`** — 조건이 충족될 때까지 Stop 이벤트를 차단합니다.
|
|
30
31
|
|
|
31
32
|
---
|
|
32
33
|
|
|
33
34
|
<Tip>
|
|
34
|
-
모든 정책은 `policyParams`에서 선택적 `hint` 필드를 지원합니다. hint는 Claude가 보는 deny 또는 instruct 메시지에 추가되어, 정책 코드를 수정하지 않고도 실행 가능한 안내를 제공합니다.
|
|
35
|
+
모든 정책은 `policyParams`에서 선택적 `hint` 필드를 지원합니다. hint는 Claude가 보는 deny 또는 instruct 메시지에 추가되어, 정책 코드를 수정하지 않고도 실행 가능한 안내를 제공합니다. 내장 정책, 커스텀 정책, 컨벤션 정책 모두에서 사용할 수 있습니다. 자세한 내용은 [설정 → hint](/ko/configuration#hint-cross-cutting)를 참고하세요.
|
|
35
36
|
</Tip>
|
|
36
37
|
|
|
37
38
|
---
|
|
38
39
|
|
|
39
40
|
## 위험한 명령어
|
|
40
41
|
|
|
41
|
-
에이전트가
|
|
42
|
+
에이전트가 실행하기 어렵거나 호스트 시스템에 손상을 줄 수 있는 작업을 실행하지 못하도록 방지합니다.
|
|
42
43
|
|
|
43
44
|
### `block-sudo`
|
|
44
45
|
|
|
45
46
|
**이벤트:** PreToolUse (Bash)
|
|
46
|
-
|
|
47
|
+
**기본값:** `sudo` 명령어가 포함된 모든 명령을 차단합니다.
|
|
47
48
|
|
|
48
|
-
`sudo` 키워드가 포함된
|
|
49
|
+
`sudo` 키워드가 포함된 명령 실행을 차단합니다. 패턴 매칭은 원시 문자열이 아닌 파싱된 명령 토큰을 기준으로 수행되므로, 셸 연산자 삽입을 통한 우회를 방지합니다.
|
|
49
50
|
|
|
50
51
|
**파라미터:**
|
|
51
52
|
|
|
52
53
|
| 파라미터 | 타입 | 기본값 | 설명 |
|
|
53
54
|
|-------|------|---------|-------------|
|
|
54
|
-
| `allowPatterns` | `string[]` | `[]` | 허용되는 정확한
|
|
55
|
+
| `allowPatterns` | `string[]` | `[]` | 허용되는 정확한 명령 접두사. 각 항목은 파싱된 argv 토큰과 대조됩니다. |
|
|
55
56
|
|
|
56
57
|
**예시:**
|
|
57
58
|
|
|
@@ -65,10 +66,10 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
65
66
|
}
|
|
66
67
|
```
|
|
67
68
|
|
|
68
|
-
이
|
|
69
|
+
이 설정에서 `sudo systemctl status nginx`는 허용되지만, `sudo rm /etc/hosts`는 차단됩니다.
|
|
69
70
|
|
|
70
71
|
<Note>
|
|
71
|
-
패턴은 원시
|
|
72
|
+
패턴은 원시 명령 문자열이 아닌 파싱된 토큰과 대조됩니다. 이를 통해 셸 연산자 추가를 통한 우회를 방지합니다 (예: `sudo systemctl status x; rm -rf /`는 `sudo systemctl status *`와 매칭되지 않습니다).
|
|
72
73
|
</Note>
|
|
73
74
|
|
|
74
75
|
---
|
|
@@ -76,13 +77,13 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
76
77
|
### `block-rm-rf`
|
|
77
78
|
|
|
78
79
|
**이벤트:** PreToolUse (Bash)
|
|
79
|
-
|
|
80
|
+
**기본값:** `rm -rf`, `rm -fr` 및 유사한 재귀적 삭제 형식을 차단합니다.
|
|
80
81
|
|
|
81
82
|
**파라미터:**
|
|
82
83
|
|
|
83
84
|
| 파라미터 | 타입 | 기본값 | 설명 |
|
|
84
85
|
|-------|------|---------|-------------|
|
|
85
|
-
| `allowPaths` | `string[]` | `[]` |
|
|
86
|
+
| `allowPaths` | `string[]` | `[]` | 재귀적 삭제가 허용되는 경로 (예: `/tmp`). |
|
|
86
87
|
|
|
87
88
|
**예시:**
|
|
88
89
|
|
|
@@ -101,7 +102,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
101
102
|
### `block-curl-pipe-sh`
|
|
102
103
|
|
|
103
104
|
**이벤트:** PreToolUse (Bash)
|
|
104
|
-
|
|
105
|
+
**기본값:** `curl <url> | bash`, `curl <url> | sh`, `wget <url> | bash` 및 유사한 패턴을 차단합니다.
|
|
105
106
|
|
|
106
107
|
파라미터 없음.
|
|
107
108
|
|
|
@@ -110,7 +111,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
110
111
|
### `block-failproofai-commands`
|
|
111
112
|
|
|
112
113
|
**이벤트:** PreToolUse (Bash)
|
|
113
|
-
|
|
114
|
+
**기본값:** failproofai 자체를 제거하거나 비활성화하는 명령(예: `npm uninstall failproofai`, `failproofai policies --uninstall`)을 차단합니다.
|
|
114
115
|
|
|
115
116
|
파라미터 없음.
|
|
116
117
|
|
|
@@ -118,12 +119,12 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
118
119
|
|
|
119
120
|
## 시크릿 (새니타이저)
|
|
120
121
|
|
|
121
|
-
에이전트가 자격 증명을 컨텍스트나 출력에
|
|
122
|
+
에이전트가 자격 증명을 컨텍스트나 출력에 노출하지 못하도록 방지합니다. 새니타이저 정책은 **PostToolUse** 이벤트에서 실행됩니다. Claude가 Bash 명령을 실행하거나, 파일을 읽거나, 도구를 호출하면 이 정책들이 출력값을 Claude에 반환하기 전에 검사합니다. 시크릿 패턴이 감지되면 해당 정책은 출력이 다시 전달되지 않도록 deny 결정을 반환합니다.
|
|
122
123
|
|
|
123
124
|
### `sanitize-jwt`
|
|
124
125
|
|
|
125
|
-
**이벤트:** PostToolUse (모든
|
|
126
|
-
|
|
126
|
+
**이벤트:** PostToolUse (모든 도구)
|
|
127
|
+
**기본값:** JWT 토큰(`.`으로 구분된 세 개의 base64url 세그먼트)을 마스킹합니다.
|
|
127
128
|
|
|
128
129
|
파라미터 없음.
|
|
129
130
|
|
|
@@ -131,8 +132,8 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
131
132
|
|
|
132
133
|
### `sanitize-api-keys`
|
|
133
134
|
|
|
134
|
-
**이벤트:** PostToolUse (모든
|
|
135
|
-
|
|
135
|
+
**이벤트:** PostToolUse (모든 도구)
|
|
136
|
+
**기본값:** 일반적인 API 키 형식을 마스킹합니다: Anthropic (`sk-ant-`), OpenAI (`sk-`), GitHub PAT (`ghp_`), AWS 액세스 키 (`AKIA`), Stripe 키 (`sk_live_`, `sk_test_`), Google API 키 (`AIza`).
|
|
136
137
|
|
|
137
138
|
**파라미터:**
|
|
138
139
|
|
|
@@ -159,8 +160,8 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
159
160
|
|
|
160
161
|
### `sanitize-connection-strings`
|
|
161
162
|
|
|
162
|
-
**이벤트:** PostToolUse (모든
|
|
163
|
-
|
|
163
|
+
**이벤트:** PostToolUse (모든 도구)
|
|
164
|
+
**기본값:** 자격 증명이 포함된 데이터베이스 연결 문자열(예: `postgresql://user:password@host/db`)을 마스킹합니다.
|
|
164
165
|
|
|
165
166
|
파라미터 없음.
|
|
166
167
|
|
|
@@ -168,8 +169,8 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
168
169
|
|
|
169
170
|
### `sanitize-private-key-content`
|
|
170
171
|
|
|
171
|
-
**이벤트:** PostToolUse (모든
|
|
172
|
-
|
|
172
|
+
**이벤트:** PostToolUse (모든 도구)
|
|
173
|
+
**기본값:** PEM 블록(`-----BEGIN PRIVATE KEY-----`, `-----BEGIN RSA PRIVATE KEY-----` 등)을 마스킹합니다.
|
|
173
174
|
|
|
174
175
|
파라미터 없음.
|
|
175
176
|
|
|
@@ -177,8 +178,8 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
177
178
|
|
|
178
179
|
### `sanitize-bearer-tokens`
|
|
179
180
|
|
|
180
|
-
**이벤트:** PostToolUse (모든
|
|
181
|
-
|
|
181
|
+
**이벤트:** PostToolUse (모든 도구)
|
|
182
|
+
**기본값:** 토큰이 20자 이상인 `Authorization: Bearer <token>` 헤더를 마스킹합니다.
|
|
182
183
|
|
|
183
184
|
파라미터 없음.
|
|
184
185
|
|
|
@@ -186,14 +187,14 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
186
187
|
|
|
187
188
|
## 환경
|
|
188
189
|
|
|
189
|
-
에이전트가 민감한 환경
|
|
190
|
+
에이전트가 민감한 환경 설정을 읽거나 노출하지 못하도록 보호합니다.
|
|
190
191
|
|
|
191
192
|
### `block-env-files`
|
|
192
193
|
|
|
193
194
|
**이벤트:** PreToolUse (Bash, Read)
|
|
194
|
-
|
|
195
|
+
**기본값:** `cat .env`, 파일 경로가 `.env`인 `Read` 도구 호출 등 `.env` 파일을 읽는 것을 차단합니다.
|
|
195
196
|
|
|
196
|
-
`.envrc`나 다른 환경 관련 파일은 차단하지 않으며, 정확히 `.env
|
|
197
|
+
`.envrc`나 다른 환경 관련 파일은 차단하지 않으며, 정확히 `.env`로 명명된 파일만 차단합니다.
|
|
197
198
|
|
|
198
199
|
파라미터 없음.
|
|
199
200
|
|
|
@@ -202,7 +203,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
202
203
|
### `protect-env-vars`
|
|
203
204
|
|
|
204
205
|
**이벤트:** PreToolUse (Bash)
|
|
205
|
-
|
|
206
|
+
**기본값:** 환경 변수를 출력하는 명령(`printenv`, `env`, `echo $VAR`)을 차단합니다.
|
|
206
207
|
|
|
207
208
|
파라미터 없음.
|
|
208
209
|
|
|
@@ -210,18 +211,18 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
210
211
|
|
|
211
212
|
## 파일 접근
|
|
212
213
|
|
|
213
|
-
에이전트가 프로젝트 경계 내에서만 작업하고 민감한 파일에 접근하지 못하도록
|
|
214
|
+
에이전트가 프로젝트 경계 내에서만 작업하고 민감한 파일에 접근하지 못하도록 유지합니다.
|
|
214
215
|
|
|
215
216
|
### `block-read-outside-cwd`
|
|
216
217
|
|
|
217
218
|
**이벤트:** PreToolUse (Read, Bash)
|
|
218
|
-
|
|
219
|
+
**기본값:** 현재 작업 디렉터리(프로젝트 루트) 외부의 파일을 읽는 것을 차단합니다.
|
|
219
220
|
|
|
220
221
|
**파라미터:**
|
|
221
222
|
|
|
222
223
|
| 파라미터 | 타입 | 기본값 | 설명 |
|
|
223
224
|
|-------|------|---------|-------------|
|
|
224
|
-
| `allowPaths` | `string[]` | `[]` | cwd 외부에 있더라도 허용되는 절대 경로
|
|
225
|
+
| `allowPaths` | `string[]` | `[]` | cwd 외부에 있더라도 허용되는 절대 경로 접두사. |
|
|
225
226
|
|
|
226
227
|
**예시:**
|
|
227
228
|
|
|
@@ -240,13 +241,13 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
240
241
|
### `block-secrets-write`
|
|
241
242
|
|
|
242
243
|
**이벤트:** PreToolUse (Write, Edit)
|
|
243
|
-
|
|
244
|
+
**기본값:** 개인 키 및 인증서에 일반적으로 사용되는 파일(`id_rsa`, `id_ed25519`, `*.key`, `*.pem`, `*.p12`, `*.pfx`)에 대한 쓰기를 차단합니다.
|
|
244
245
|
|
|
245
246
|
**파라미터:**
|
|
246
247
|
|
|
247
248
|
| 파라미터 | 타입 | 기본값 | 설명 |
|
|
248
249
|
|-------|------|---------|-------------|
|
|
249
|
-
| `additionalPatterns` | `string[]` | `[]` | 차단할 추가 파일명 패턴 (글로브
|
|
250
|
+
| `additionalPatterns` | `string[]` | `[]` | 차단할 추가 파일명 패턴 (글로브 방식). |
|
|
250
251
|
|
|
251
252
|
**예시:**
|
|
252
253
|
|
|
@@ -269,7 +270,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
269
270
|
### `block-push-master`
|
|
270
271
|
|
|
271
272
|
**이벤트:** PreToolUse (Bash)
|
|
272
|
-
|
|
273
|
+
**기본값:** `git push origin main` 및 `git push origin master`를 차단합니다.
|
|
273
274
|
|
|
274
275
|
**파라미터:**
|
|
275
276
|
|
|
@@ -290,7 +291,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
290
291
|
```
|
|
291
292
|
|
|
292
293
|
<Tip>
|
|
293
|
-
`enabledPolicies`에서
|
|
294
|
+
`enabledPolicies`에서 제거하지 않고 이 정책을 사실상 비활성화하려면(모든 브랜치에 푸시 허용), `protectedBranches: []`로 설정하세요.
|
|
294
295
|
</Tip>
|
|
295
296
|
|
|
296
297
|
---
|
|
@@ -298,7 +299,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
298
299
|
### `block-work-on-main`
|
|
299
300
|
|
|
300
301
|
**이벤트:** PreToolUse (Bash)
|
|
301
|
-
|
|
302
|
+
**기본값:** `main` 또는 `master` 브랜치를 직접 체크아웃하는 것을 차단합니다.
|
|
302
303
|
|
|
303
304
|
**파라미터:**
|
|
304
305
|
|
|
@@ -311,9 +312,9 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
311
312
|
### `block-force-push`
|
|
312
313
|
|
|
313
314
|
**이벤트:** PreToolUse (Bash)
|
|
314
|
-
|
|
315
|
+
**기본값:** `git push --force` 및 `git push -f`를 차단합니다.
|
|
315
316
|
|
|
316
|
-
정책별
|
|
317
|
+
정책별 파라미터는 없습니다. 공통 [`hint`](/ko/configuration#hint-cross-cutting)를 사용하여 대안을 제안할 수 있습니다:
|
|
317
318
|
|
|
318
319
|
```json
|
|
319
320
|
{
|
|
@@ -330,7 +331,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
330
331
|
### `warn-git-amend`
|
|
331
332
|
|
|
332
333
|
**이벤트:** PreToolUse (Bash)
|
|
333
|
-
|
|
334
|
+
**기본값:** `git commit --amend` 실행 시 Claude에게 주의하여 진행하도록 안내합니다. 명령을 차단하지는 않습니다.
|
|
334
335
|
|
|
335
336
|
파라미터 없음.
|
|
336
337
|
|
|
@@ -339,7 +340,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
339
340
|
### `warn-git-stash-drop`
|
|
340
341
|
|
|
341
342
|
**이벤트:** PreToolUse (Bash)
|
|
342
|
-
|
|
343
|
+
**기본값:** `git stash drop` 실행 전 Claude에게 확인하도록 안내합니다. 명령을 차단하지는 않습니다.
|
|
343
344
|
|
|
344
345
|
파라미터 없음.
|
|
345
346
|
|
|
@@ -348,7 +349,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
348
349
|
### `warn-all-files-staged`
|
|
349
350
|
|
|
350
351
|
**이벤트:** PreToolUse (Bash)
|
|
351
|
-
|
|
352
|
+
**기본값:** `git add -A` 또는 `git add .` 실행 시 Claude에게 스테이징할 내용을 검토하도록 안내합니다. 명령을 차단하지는 않습니다.
|
|
352
353
|
|
|
353
354
|
파라미터 없음.
|
|
354
355
|
|
|
@@ -361,7 +362,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
361
362
|
### `warn-destructive-sql`
|
|
362
363
|
|
|
363
364
|
**이벤트:** PreToolUse (Bash)
|
|
364
|
-
|
|
365
|
+
**기본값:** `DROP TABLE`, `DROP DATABASE`, 또는 `WHERE` 절이 없는 `DELETE`가 포함된 SQL 실행 전 Claude에게 확인하도록 안내합니다.
|
|
365
366
|
|
|
366
367
|
파라미터 없음.
|
|
367
368
|
|
|
@@ -370,7 +371,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
370
371
|
### `warn-schema-alteration`
|
|
371
372
|
|
|
372
373
|
**이벤트:** PreToolUse (Bash)
|
|
373
|
-
|
|
374
|
+
**기본값:** `ALTER TABLE` 구문 실행 전 Claude에게 확인하도록 안내합니다.
|
|
374
375
|
|
|
375
376
|
파라미터 없음.
|
|
376
377
|
|
|
@@ -378,12 +379,12 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
378
379
|
|
|
379
380
|
## 경고
|
|
380
381
|
|
|
381
|
-
|
|
382
|
+
잠재적으로 위험하지만 파괴적이지 않은 작업 전에 에이전트에게 추가 맥락을 제공합니다.
|
|
382
383
|
|
|
383
384
|
### `warn-large-file-write`
|
|
384
385
|
|
|
385
386
|
**이벤트:** PreToolUse (Write)
|
|
386
|
-
|
|
387
|
+
**기본값:** 1024 KB보다 큰 파일을 쓰기 전에 Claude에게 확인하도록 안내합니다.
|
|
387
388
|
|
|
388
389
|
**파라미터:**
|
|
389
390
|
|
|
@@ -412,7 +413,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
412
413
|
### `warn-package-publish`
|
|
413
414
|
|
|
414
415
|
**이벤트:** PreToolUse (Bash)
|
|
415
|
-
|
|
416
|
+
**기본값:** `npm publish` 실행 전 Claude에게 확인하도록 안내합니다.
|
|
416
417
|
|
|
417
418
|
파라미터 없음.
|
|
418
419
|
|
|
@@ -421,7 +422,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
421
422
|
### `warn-background-process`
|
|
422
423
|
|
|
423
424
|
**이벤트:** PreToolUse (Bash)
|
|
424
|
-
|
|
425
|
+
**기본값:** `nohup`, `&`, `disown`, `screen`을 통해 백그라운드 프로세스를 시작할 때 Claude에게 주의하도록 안내합니다.
|
|
425
426
|
|
|
426
427
|
파라미터 없음.
|
|
427
428
|
|
|
@@ -430,20 +431,56 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
430
431
|
### `warn-global-package-install`
|
|
431
432
|
|
|
432
433
|
**이벤트:** PreToolUse (Bash)
|
|
433
|
-
|
|
434
|
+
**기본값:** `npm install -g`, `yarn global add`, 또는 가상 환경 없이 `pip install` 실행 전 Claude에게 확인하도록 안내합니다.
|
|
434
435
|
|
|
435
436
|
파라미터 없음.
|
|
436
437
|
|
|
437
438
|
---
|
|
438
439
|
|
|
440
|
+
## 패키지 매니저
|
|
441
|
+
|
|
442
|
+
에이전트가 사용할 수 있는 패키지 매니저를 제한합니다.
|
|
443
|
+
|
|
444
|
+
### `prefer-package-manager`
|
|
445
|
+
|
|
446
|
+
**이벤트:** PreToolUse (Bash)
|
|
447
|
+
**기본값:** 비활성화됨. 활성화 시, `allowed` 목록에 없는 패키지 매니저 명령을 차단하고 허용된 매니저를 사용하도록 Claude에게 명령을 재작성하도록 안내합니다.
|
|
448
|
+
|
|
449
|
+
감지 대상: pip, pip3, python -m pip, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo.
|
|
450
|
+
|
|
451
|
+
| 파라미터 | 타입 | 기본값 | 설명 |
|
|
452
|
+
|-----------|------|---------|-------------|
|
|
453
|
+
| `allowed` | string[] | `[]` | 허용되는 패키지 매니저 이름. 이 목록에 없는 감지된 매니저는 차단됩니다. 비어 있으면 정책이 동작하지 않습니다. |
|
|
454
|
+
| `blocked` | string[] | `[]` | 내장 목록 외에 추가로 차단할 매니저 이름 (예: `['pdm', 'pipx']`). |
|
|
455
|
+
|
|
456
|
+
내장 차단 목록에는 pip, pip3, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo가 포함됩니다. `blocked`를 사용하여 이 목록에 없는 매니저를 추가할 수 있습니다.
|
|
457
|
+
|
|
458
|
+
**예시 설정:**
|
|
459
|
+
|
|
460
|
+
```json
|
|
461
|
+
{
|
|
462
|
+
"enabledPolicies": ["prefer-package-manager"],
|
|
463
|
+
"policyParams": {
|
|
464
|
+
"prefer-package-manager": {
|
|
465
|
+
"allowed": ["uv", "bun"],
|
|
466
|
+
"blocked": ["pdm", "pipx"]
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
이 설정에서 `pip install flask`와 `pdm install flask`는 모두 차단되며, `uv` 또는 `bun`을 사용하도록 안내하는 메시지가 표시됩니다. `uv pip install flask`와 같은 명령은 `uv`가 허용 목록에 있고 우선적으로 확인되므로 허용됩니다.
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
439
476
|
## AI 동작
|
|
440
477
|
|
|
441
|
-
에이전트가
|
|
478
|
+
에이전트가 루프에 빠지거나 예상치 못한 동작을 보일 때 감지합니다.
|
|
442
479
|
|
|
443
480
|
### `warn-repeated-tool-calls`
|
|
444
481
|
|
|
445
|
-
**이벤트:** PreToolUse (모든
|
|
446
|
-
|
|
482
|
+
**이벤트:** PreToolUse (모든 도구)
|
|
483
|
+
**기본값:** 동일한 도구가 동일한 파라미터로 3회 이상 호출될 때 Claude에게 재고하도록 안내합니다. 이는 에이전트가 루프에 빠졌다는 일반적인 신호입니다.
|
|
447
484
|
|
|
448
485
|
파라미터 없음.
|
|
449
486
|
|
|
@@ -451,14 +488,14 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
451
488
|
|
|
452
489
|
## 워크플로우
|
|
453
490
|
|
|
454
|
-
세션 종료 시
|
|
491
|
+
세션 종료 시 규율 있는 워크플로우를 강제합니다. 이 정책들은 **Stop** 이벤트에서 실행되며, 각 조건이 충족될 때까지 Claude의 중단을 차단합니다. 커밋 → 푸시 → PR → CI의 자연스러운 의존성 체인을 따릅니다. 정책이 deny를 반환하면 이후 정책들은 건너뜁니다 (deny 단락 평가).
|
|
455
492
|
|
|
456
|
-
모든 워크플로우 정책은 **fail-open** 방식입니다: 필요한
|
|
493
|
+
모든 워크플로우 정책은 **fail-open** 방식입니다: 필요한 도구를 사용할 수 없는 경우(예: `gh` 미설치, git 원격 없음), 정책은 검사가 건너뛰어진 이유를 설명하는 안내 메시지와 함께 허용합니다.
|
|
457
494
|
|
|
458
495
|
### `require-commit-before-stop`
|
|
459
496
|
|
|
460
497
|
**이벤트:** Stop
|
|
461
|
-
|
|
498
|
+
**기본값:** 커밋되지 않은 변경사항(수정됨, 스테이징됨, 추적되지 않은 파일)이 있을 때 중단을 차단합니다. 작업 디렉터리가 깨끗한 경우 안내 메시지를 반환합니다.
|
|
462
499
|
|
|
463
500
|
파라미터 없음.
|
|
464
501
|
|
|
@@ -467,7 +504,7 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
467
504
|
### `require-push-before-stop`
|
|
468
505
|
|
|
469
506
|
**이벤트:** Stop
|
|
470
|
-
|
|
507
|
+
**기본값:** 푸시되지 않은 커밋이 있거나 현재 브랜치에 원격 추적 브랜치가 없을 때 중단을 차단합니다. 필요한 경우 추적 브랜치를 생성하도록 `git push -u`를 제안합니다. 원격이 설정되지 않은 경우 fail-open 방식으로 동작합니다.
|
|
471
508
|
|
|
472
509
|
**파라미터:**
|
|
473
510
|
|
|
@@ -492,13 +529,13 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
492
529
|
### `require-pr-before-stop`
|
|
493
530
|
|
|
494
531
|
**이벤트:** Stop
|
|
495
|
-
|
|
532
|
+
**기본값:** 현재 브랜치에 풀 리퀘스트가 없거나 기존 PR이 closed/merged 상태일 때 중단을 차단합니다. `gh pr create`로 PR을 생성하도록 Claude에게 안내합니다.
|
|
496
533
|
|
|
497
534
|
파라미터 없음.
|
|
498
535
|
|
|
499
536
|
<Note>
|
|
500
|
-
이
|
|
501
|
-
풀
|
|
537
|
+
이 정책을 사용하려면 [GitHub CLI](https://cli.github.com/) (`gh`)가 설치되어 있고 인증되어 있어야 합니다.
|
|
538
|
+
풀 리퀘스트 읽기 권한을 위해 `repo` 스코프를 가진 개인 액세스 토큰으로 `gh auth login`을 실행하세요. `gh`가 설치되어 있지 않거나 인증되지 않은 경우, 정책은 fail-open 방식으로 동작하며 그 이유를 Claude에게 보고합니다.
|
|
502
539
|
</Note>
|
|
503
540
|
|
|
504
541
|
---
|
|
@@ -506,13 +543,13 @@ failproofai는 일반적인 에이전트 실패 유형을 감지하는 30개의
|
|
|
506
543
|
### `require-ci-green-before-stop`
|
|
507
544
|
|
|
508
545
|
**이벤트:** Stop
|
|
509
|
-
|
|
546
|
+
**기본값:** 현재 브랜치의 CI 검사가 실패하거나 아직 실행 중일 때 중단을 차단합니다. GitHub Actions 워크플로우 실행과 서드파티 봇 검사(예: CodeRabbit, SonarCloud, Codecov) 모두를 확인합니다. `skipped` 및 `cancelled` 결과는 성공으로 처리합니다. 모든 검사가 통과되면 안내 메시지를 반환합니다.
|
|
510
547
|
|
|
511
548
|
파라미터 없음.
|
|
512
549
|
|
|
513
550
|
<Note>
|
|
514
|
-
이
|
|
515
|
-
Actions 워크플로우 실행 및 Checks API에 대한 읽기
|
|
551
|
+
이 정책을 사용하려면 [GitHub CLI](https://cli.github.com/) (`gh`)가 설치되어 있고 인증되어 있어야 합니다.
|
|
552
|
+
Actions 워크플로우 실행 및 Checks API에 대한 읽기 권한을 위해 `repo` 스코프를 가진 개인 액세스 토큰으로 `gh auth login`을 실행하세요. `gh`가 설치되어 있지 않거나 인증되지 않은 경우, 정책은 fail-open 방식으로 동작하며 그 이유를 Claude에게 보고합니다.
|
|
516
553
|
</Note>
|
|
517
554
|
|
|
518
555
|
---
|
|
@@ -521,7 +558,7 @@ Actions 워크플로우 실행 및 Checks API에 대한 읽기 접근을 위해
|
|
|
521
558
|
|
|
522
559
|
## 개별 정책 비활성화
|
|
523
560
|
|
|
524
|
-
설정 파일의 `enabledPolicies`에서 특정 정책을 제거하거나, 대시보드의 Policies 탭에서
|
|
561
|
+
설정 파일의 `enabledPolicies`에서 특정 정책을 제거하거나, 대시보드의 Policies 탭에서 해제합니다.
|
|
525
562
|
|
|
526
563
|
```json
|
|
527
564
|
{
|