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
|
@@ -7,7 +7,7 @@ icon: rocket
|
|
|
7
7
|
## 요구 사항
|
|
8
8
|
|
|
9
9
|
- **Node.js** >= 20.9.0
|
|
10
|
-
- **Bun** >= 1.3.0 (선택 사항 - 소스에서 빌드할 때만 필요)
|
|
10
|
+
- **Bun** >= 1.3.0 (선택 사항 - 소스에서 직접 빌드할 때만 필요)
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -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
|
-
이 명령은 Claude Code의 `settings.json`에 훅 항목을 작성합니다. 단일 프로젝트에만 설치하거나 특정
|
|
40
|
+
이 명령은 Claude Code의 `settings.json`에 훅 항목을 작성합니다. 단일 프로젝트에만 설치하거나 특정 정책만 선택할 수도 있습니다:
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
failproofai policies --install --scope project
|
|
@@ -56,10 +56,10 @@ bun add -g failproofai
|
|
|
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
|
|
|
@@ -78,7 +78,7 @@ Claude Code → failproofai --hook PreToolUse → reads stdin JSON
|
|
|
78
78
|
각 정책은 다음 세 가지 결정 중 하나를 반환합니다:
|
|
79
79
|
|
|
80
80
|
- **allow** - 에이전트가 정상적으로 진행됩니다
|
|
81
|
-
- **deny** -
|
|
81
|
+
- **deny** - 동작이 차단되고 에이전트에게 이유가 전달됩니다
|
|
82
82
|
- **instruct** - 에이전트의 프롬프트에 추가 컨텍스트가 삽입됩니다
|
|
83
83
|
|
|
84
84
|
<Note>
|
|
@@ -87,17 +87,69 @@ Claude Code → failproofai --hook PreToolUse → reads stdin JSON
|
|
|
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
|
+
모든 설정과 로그는 로컬 머신에 저장됩니다:
|
|
93
145
|
|
|
94
146
|
| 경로 | 저장 내용 |
|
|
95
147
|
|------|----------------|
|
|
96
148
|
| `~/.failproofai/policies-config.json` | 전역 정책 설정 |
|
|
97
|
-
| `~/.failproofai/hook-activity.jsonl` | 훅 실행
|
|
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
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Políticas Integradas
|
|
3
|
-
description: "Todas as 30 políticas integradas que detectam falhas comuns
|
|
3
|
+
description: "Todas as 30 políticas integradas que detectam falhas comuns em agentes"
|
|
4
4
|
icon: shield
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
failproofai vem com 30 políticas integradas que detectam falhas comuns
|
|
7
|
+
failproofai vem com 30 políticas integradas que detectam falhas comuns em agentes. Cada política é acionada em um tipo específico de evento de hook e nome de ferramenta. Nove políticas aceitam parâmetros que permitem ajustar seu comportamento sem escrever código. Quatro políticas de fluxo de trabalho impõem um pipeline de commit → push → PR → CI antes que Claude pare.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Visão
|
|
11
|
+
## Visão Geral
|
|
12
12
|
|
|
13
13
|
As políticas são agrupadas em categorias:
|
|
14
14
|
|
|
@@ -21,6 +21,7 @@ As políticas são agrupadas em categorias:
|
|
|
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
|
| [Banco de dados](#database) | warn-destructive-sql, warn-schema-alteration | PreToolUse |
|
|
23
23
|
| [Avisos](#warnings) | warn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-install | PreToolUse |
|
|
24
|
+
| [Gerenciadores de pacotes](#package-managers) | prefer-package-manager | PreToolUse |
|
|
24
25
|
| [Fluxo de trabalho](#workflow) | require-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-ci-green-before-stop | Stop |
|
|
25
26
|
|
|
26
27
|
- **`block-`** — impede o agente de prosseguir.
|
|
@@ -31,7 +32,7 @@ As políticas são agrupadas em categorias:
|
|
|
31
32
|
---
|
|
32
33
|
|
|
33
34
|
<Tip>
|
|
34
|
-
Toda política suporta um campo opcional `hint` em `policyParams`. O hint é anexado à mensagem de deny ou instruct que Claude vê, fornecendo
|
|
35
|
+
Toda política suporta um campo opcional `hint` em `policyParams`. O hint é anexado à mensagem de deny ou instruct que Claude vê, fornecendo orientação prática sem modificar o código da política. Funciona com políticas integradas, personalizadas e de convenção. Consulte [Configuração → hint](/pt-br/configuration#hint-cross-cutting) para mais detalhes.
|
|
35
36
|
</Tip>
|
|
36
37
|
|
|
37
38
|
---
|
|
@@ -45,7 +46,7 @@ Impede que agentes executem operações difíceis de desfazer ou que possam dani
|
|
|
45
46
|
**Evento:** PreToolUse (Bash)
|
|
46
47
|
**Padrão:** Nega qualquer comando `sudo`.
|
|
47
48
|
|
|
48
|
-
Bloqueia invocações que
|
|
49
|
+
Bloqueia invocações que incluem a palavra-chave `sudo`. A correspondência de padrão é feita nos tokens de comando analisados, não na string bruta, para evitar bypass por injeção de operadores shell.
|
|
49
50
|
|
|
50
51
|
**Parâmetros:**
|
|
51
52
|
|
|
@@ -65,10 +66,10 @@ Bloqueia invocações que incluam a palavra-chave `sudo`. A correspondência de
|
|
|
65
66
|
}
|
|
66
67
|
```
|
|
67
68
|
|
|
68
|
-
Com
|
|
69
|
+
Com esta configuração, `sudo systemctl status nginx` é permitido, mas `sudo rm /etc/hosts` é negado.
|
|
69
70
|
|
|
70
71
|
<Note>
|
|
71
|
-
Os padrões são comparados com os tokens analisados, não com a string de comando bruta. Isso
|
|
72
|
+
Os padrões são comparados com os tokens analisados, não com a string de comando bruta. Isso impede bypass por meio de operadores shell anexados (ex.: `sudo systemctl status x; rm -rf /` não corresponde a `sudo systemctl status *`).
|
|
72
73
|
</Note>
|
|
73
74
|
|
|
74
75
|
---
|
|
@@ -82,7 +83,7 @@ Os padrões são comparados com os tokens analisados, não com a string de coman
|
|
|
82
83
|
|
|
83
84
|
| Parâmetro | Tipo | Padrão | Descrição |
|
|
84
85
|
|-----------|------|--------|-----------|
|
|
85
|
-
| `allowPaths` | `string[]` | `[]` | Caminhos que
|
|
86
|
+
| `allowPaths` | `string[]` | `[]` | Caminhos que podem ser excluídos recursivamente com segurança (ex.: `/tmp`). |
|
|
86
87
|
|
|
87
88
|
**Exemplo:**
|
|
88
89
|
|
|
@@ -110,7 +111,7 @@ Sem parâmetros.
|
|
|
110
111
|
### `block-failproofai-commands`
|
|
111
112
|
|
|
112
113
|
**Evento:** PreToolUse (Bash)
|
|
113
|
-
**Padrão:** Nega comandos que
|
|
114
|
+
**Padrão:** Nega comandos que desinstalariam ou desativariam o próprio failproofai (ex.: `npm uninstall failproofai`, `failproofai policies --uninstall`).
|
|
114
115
|
|
|
115
116
|
Sem parâmetros.
|
|
116
117
|
|
|
@@ -118,7 +119,7 @@ Sem parâmetros.
|
|
|
118
119
|
|
|
119
120
|
## Segredos (sanitizadores)
|
|
120
121
|
|
|
121
|
-
Impede que agentes vazem credenciais em seu contexto ou saída. As políticas de sanitização são acionadas em eventos **PostToolUse**. Quando Claude executa um comando Bash, lê um arquivo ou chama qualquer ferramenta, essas políticas inspecionam a saída antes
|
|
122
|
+
Impede que agentes vazem credenciais em seu contexto ou saída. As políticas de sanitização são acionadas em eventos **PostToolUse**. Quando Claude executa um comando Bash, lê um arquivo ou chama qualquer ferramenta, essas políticas inspecionam a saída antes de ela ser retornada a Claude. Se um padrão de segredo for detectado, a política retorna uma decisão de deny que impede que a saída seja repassada.
|
|
122
123
|
|
|
123
124
|
### `sanitize-jwt`
|
|
124
125
|
|
|
@@ -132,7 +133,7 @@ Sem parâmetros.
|
|
|
132
133
|
### `sanitize-api-keys`
|
|
133
134
|
|
|
134
135
|
**Evento:** PostToolUse (todas as ferramentas)
|
|
135
|
-
**Padrão:** Redige formatos comuns de
|
|
136
|
+
**Padrão:** Redige formatos comuns de chave de API: Anthropic (`sk-ant-`), OpenAI (`sk-`), GitHub PATs (`ghp_`), chaves de acesso AWS (`AKIA`), chaves Stripe (`sk_live_`, `sk_test_`) e chaves de API do Google (`AIza`).
|
|
136
137
|
|
|
137
138
|
**Parâmetros:**
|
|
138
139
|
|
|
@@ -160,7 +161,7 @@ Sem parâmetros.
|
|
|
160
161
|
### `sanitize-connection-strings`
|
|
161
162
|
|
|
162
163
|
**Evento:** PostToolUse (todas as ferramentas)
|
|
163
|
-
**Padrão:** Redige strings de conexão de banco de dados que contêm credenciais
|
|
164
|
+
**Padrão:** Redige strings de conexão de banco de dados que contêm credenciais embutidas (ex.: `postgresql://user:password@host/db`).
|
|
164
165
|
|
|
165
166
|
Sem parâmetros.
|
|
166
167
|
|
|
@@ -186,7 +187,7 @@ Sem parâmetros.
|
|
|
186
187
|
|
|
187
188
|
## Ambiente
|
|
188
189
|
|
|
189
|
-
Protege a configuração
|
|
190
|
+
Protege a configuração sensível do ambiente de ser lida ou exposta por agentes.
|
|
190
191
|
|
|
191
192
|
### `block-env-files`
|
|
192
193
|
|
|
@@ -202,7 +203,7 @@ Sem parâmetros.
|
|
|
202
203
|
### `protect-env-vars`
|
|
203
204
|
|
|
204
205
|
**Evento:** PreToolUse (Bash)
|
|
205
|
-
**Padrão:** Nega comandos que
|
|
206
|
+
**Padrão:** Nega comandos que imprimem variáveis de ambiente: `printenv`, `env`, `echo $VAR`.
|
|
206
207
|
|
|
207
208
|
Sem parâmetros.
|
|
208
209
|
|
|
@@ -210,7 +211,7 @@ Sem parâmetros.
|
|
|
210
211
|
|
|
211
212
|
## Acesso a arquivos
|
|
212
213
|
|
|
213
|
-
Mantém agentes trabalhando dentro dos limites do projeto e longe de arquivos sensíveis.
|
|
214
|
+
Mantém os agentes trabalhando dentro dos limites do projeto e longe de arquivos sensíveis.
|
|
214
215
|
|
|
215
216
|
### `block-read-outside-cwd`
|
|
216
217
|
|
|
@@ -221,7 +222,7 @@ Mantém agentes trabalhando dentro dos limites do projeto e longe de arquivos se
|
|
|
221
222
|
|
|
222
223
|
| Parâmetro | Tipo | Padrão | Descrição |
|
|
223
224
|
|-----------|------|--------|-----------|
|
|
224
|
-
| `allowPaths` | `string[]` | `[]` | Prefixos de caminho absoluto que são permitidos mesmo
|
|
225
|
+
| `allowPaths` | `string[]` | `[]` | Prefixos de caminho absoluto que são permitidos mesmo estando fora do cwd. |
|
|
225
226
|
|
|
226
227
|
**Exemplo:**
|
|
227
228
|
|
|
@@ -240,7 +241,7 @@ Mantém agentes trabalhando dentro dos limites do projeto e longe de arquivos se
|
|
|
240
241
|
### `block-secrets-write`
|
|
241
242
|
|
|
242
243
|
**Evento:** PreToolUse (Write, Edit)
|
|
243
|
-
**Padrão:** Nega
|
|
244
|
+
**Padrão:** Nega gravações em arquivos comumente usados para chaves privadas e certificados: `id_rsa`, `id_ed25519`, `*.key`, `*.pem`, `*.p12`, `*.pfx`.
|
|
244
245
|
|
|
245
246
|
**Parâmetros:**
|
|
246
247
|
|
|
@@ -275,7 +276,7 @@ Previne pushes acidentais, force-pushes e erros de branch que são difíceis de
|
|
|
275
276
|
|
|
276
277
|
| Parâmetro | Tipo | Padrão | Descrição |
|
|
277
278
|
|-----------|------|--------|-----------|
|
|
278
|
-
| `protectedBranches` | `string[]` | `["main", "master"]` | Nomes de
|
|
279
|
+
| `protectedBranches` | `string[]` | `["main", "master"]` | Nomes de branch para os quais não é possível fazer push diretamente. |
|
|
279
280
|
|
|
280
281
|
**Exemplo:**
|
|
281
282
|
|
|
@@ -290,7 +291,7 @@ Previne pushes acidentais, force-pushes e erros de branch que são difíceis de
|
|
|
290
291
|
```
|
|
291
292
|
|
|
292
293
|
<Tip>
|
|
293
|
-
Para permitir push
|
|
294
|
+
Para permitir push em todos os branches (desativando efetivamente esta política sem removê-la de `enabledPolicies`), defina `protectedBranches: []`.
|
|
294
295
|
</Tip>
|
|
295
296
|
|
|
296
297
|
---
|
|
@@ -304,7 +305,7 @@ Para permitir push para todos os branches (desabilitando efetivamente esta polí
|
|
|
304
305
|
|
|
305
306
|
| Parâmetro | Tipo | Padrão | Descrição |
|
|
306
307
|
|-----------|------|--------|-----------|
|
|
307
|
-
| `protectedBranches` | `string[]` | `["main", "master"]` | Nomes de
|
|
308
|
+
| `protectedBranches` | `string[]` | `["main", "master"]` | Nomes de branch que não podem ser acessados diretamente via checkout. |
|
|
308
309
|
|
|
309
310
|
---
|
|
310
311
|
|
|
@@ -313,7 +314,7 @@ Para permitir push para todos os branches (desabilitando efetivamente esta polí
|
|
|
313
314
|
**Evento:** PreToolUse (Bash)
|
|
314
315
|
**Padrão:** Nega `git push --force` e `git push -f`.
|
|
315
316
|
|
|
316
|
-
Sem parâmetros específicos
|
|
317
|
+
Sem parâmetros específicos de política. Use o [`hint`](/pt-br/configuration#hint-cross-cutting) transversal para sugerir alternativas:
|
|
317
318
|
|
|
318
319
|
```json
|
|
319
320
|
{
|
|
@@ -348,7 +349,7 @@ Sem parâmetros.
|
|
|
348
349
|
### `warn-all-files-staged`
|
|
349
350
|
|
|
350
351
|
**Evento:** PreToolUse (Bash)
|
|
351
|
-
**Padrão:** Instrui Claude a revisar o que está sendo
|
|
352
|
+
**Padrão:** Instrui Claude a revisar o que está sendo preparado para commit ao executar `git add -A` ou `git add .`. Não bloqueia o comando.
|
|
352
353
|
|
|
353
354
|
Sem parâmetros.
|
|
354
355
|
|
|
@@ -383,7 +384,7 @@ Fornece contexto extra aos agentes antes de operações potencialmente arriscada
|
|
|
383
384
|
### `warn-large-file-write`
|
|
384
385
|
|
|
385
386
|
**Evento:** PreToolUse (Write)
|
|
386
|
-
**Padrão:** Instrui Claude a confirmar antes de
|
|
387
|
+
**Padrão:** Instrui Claude a confirmar antes de gravar arquivos maiores que 1024 KB.
|
|
387
388
|
|
|
388
389
|
**Parâmetros:**
|
|
389
390
|
|
|
@@ -404,7 +405,7 @@ Fornece contexto extra aos agentes antes de operações potencialmente arriscada
|
|
|
404
405
|
```
|
|
405
406
|
|
|
406
407
|
<Note>
|
|
407
|
-
O handler
|
|
408
|
+
O handler do hook impõe um limite de 1 MB no stdin para payloads. Para testar esta política com conteúdo pequeno, defina `thresholdKb` com um valor bem abaixo de 1024.
|
|
408
409
|
</Note>
|
|
409
410
|
|
|
410
411
|
---
|
|
@@ -436,6 +437,42 @@ Sem parâmetros.
|
|
|
436
437
|
|
|
437
438
|
---
|
|
438
439
|
|
|
440
|
+
## Gerenciadores de pacotes
|
|
441
|
+
|
|
442
|
+
Impõe quais gerenciadores de pacotes o agente pode usar.
|
|
443
|
+
|
|
444
|
+
### `prefer-package-manager`
|
|
445
|
+
|
|
446
|
+
**Evento:** PreToolUse (Bash)
|
|
447
|
+
**Padrão:** Desabilitado. Quando habilitado, bloqueia qualquer comando de gerenciador de pacotes que não esteja na lista `allowed` e instrui Claude a reescrever o comando usando um gerenciador permitido.
|
|
448
|
+
|
|
449
|
+
Detecta: pip, pip3, python -m pip, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo.
|
|
450
|
+
|
|
451
|
+
| Parâmetro | Tipo | Padrão | Descrição |
|
|
452
|
+
|-----------|------|--------|-----------|
|
|
453
|
+
| `allowed` | string[] | `[]` | Nomes de gerenciadores de pacotes permitidos. Qualquer gerenciador detectado que não esteja nesta lista é bloqueado. Quando vazia, a política não faz nada. |
|
|
454
|
+
| `blocked` | string[] | `[]` | Nomes adicionais de gerenciadores a bloquear além da lista integrada (ex.: `['pdm', 'pipx']`). |
|
|
455
|
+
|
|
456
|
+
A lista de bloqueio integrada abrange: pip, pip3, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo. Use `blocked` para adicionar gerenciadores que não estão nesta lista.
|
|
457
|
+
|
|
458
|
+
**Exemplo de configuração:**
|
|
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
|
+
Com esta configuração, `pip install flask` e `pdm install flask` são ambos negados com uma mensagem instruindo Claude a usar `uv` ou `bun`. Comandos como `uv pip install flask` são permitidos porque `uv` está na lista de permissões e é verificado primeiro.
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
439
476
|
## Comportamento de IA
|
|
440
477
|
|
|
441
478
|
Detecta quando agentes ficam travados ou se comportam de forma inesperada.
|
|
@@ -451,14 +488,14 @@ Sem parâmetros.
|
|
|
451
488
|
|
|
452
489
|
## Fluxo de trabalho
|
|
453
490
|
|
|
454
|
-
Impõe um fluxo de trabalho disciplinado ao final da sessão. Essas políticas são acionadas no evento **Stop** e impedem Claude de parar até que cada condição seja atendida. Elas seguem uma cadeia de dependência natural: commit → push → PR → CI. Se uma política
|
|
491
|
+
Impõe um fluxo de trabalho disciplinado ao final da sessão. Essas políticas são acionadas no evento **Stop** e impedem Claude de parar até que cada condição seja atendida. Elas seguem uma cadeia de dependência natural: commit → push → PR → CI. Se uma política negar, as políticas subsequentes na cadeia são ignoradas (deny provoca curto-circuito).
|
|
455
492
|
|
|
456
|
-
Todas as políticas de fluxo de trabalho são **fail-open**: se a ferramenta necessária não estiver disponível (ex
|
|
493
|
+
Todas as políticas de fluxo de trabalho são **fail-open**: se a ferramenta necessária não estiver disponível (ex.: `gh` não instalado, sem remote git), a política permite com uma mensagem informativa explicando por que a verificação foi ignorada.
|
|
457
494
|
|
|
458
495
|
### `require-commit-before-stop`
|
|
459
496
|
|
|
460
497
|
**Evento:** Stop
|
|
461
|
-
**Padrão:** Nega a parada quando há alterações não commitadas (arquivos modificados,
|
|
498
|
+
**Padrão:** Nega a parada quando há alterações não commitadas (arquivos modificados, preparados ou não rastreados). Retorna uma mensagem informativa quando o diretório de trabalho está limpo.
|
|
462
499
|
|
|
463
500
|
Sem parâmetros.
|
|
464
501
|
|
|
@@ -467,13 +504,13 @@ Sem parâmetros.
|
|
|
467
504
|
### `require-push-before-stop`
|
|
468
505
|
|
|
469
506
|
**Evento:** Stop
|
|
470
|
-
**Padrão:** Nega a parada quando há commits não enviados
|
|
507
|
+
**Padrão:** Nega a parada quando há commits não enviados ou quando o branch atual não possui um branch de rastreamento remoto. Sugere `git push -u` para criar um branch de rastreamento se necessário. Fail-open se nenhum remote estiver configurado.
|
|
471
508
|
|
|
472
509
|
**Parâmetros:**
|
|
473
510
|
|
|
474
511
|
| Parâmetro | Tipo | Padrão | Descrição |
|
|
475
512
|
|-----------|------|--------|-----------|
|
|
476
|
-
| `remote` | `string` | `"origin"` | Nome do remote para
|
|
513
|
+
| `remote` | `string` | `"origin"` | Nome do remote para onde fazer push. |
|
|
477
514
|
|
|
478
515
|
**Exemplo:**
|
|
479
516
|
|
|
@@ -492,14 +529,14 @@ Sem parâmetros.
|
|
|
492
529
|
### `require-pr-before-stop`
|
|
493
530
|
|
|
494
531
|
**Evento:** Stop
|
|
495
|
-
**Padrão:** Nega a parada quando não existe pull request para o branch atual, ou quando o PR existente está fechado/
|
|
532
|
+
**Padrão:** Nega a parada quando não existe pull request para o branch atual, ou quando o PR existente está fechado/mergeado. Instrui Claude a criar um PR com `gh pr create`.
|
|
496
533
|
|
|
497
534
|
Sem parâmetros.
|
|
498
535
|
|
|
499
536
|
<Note>
|
|
500
537
|
Esta política requer que o [GitHub CLI](https://cli.github.com/) (`gh`) esteja instalado e autenticado.
|
|
501
538
|
Execute `gh auth login` com um token de acesso pessoal que tenha escopo `repo` para acesso de leitura a
|
|
502
|
-
pull requests. Se `gh` não estiver instalado ou autenticado, a política falha de forma aberta e reporta o motivo
|
|
539
|
+
pull requests. Se `gh` não estiver instalado ou autenticado, a política falha de forma aberta (fail-open) e reporta o motivo a Claude.
|
|
503
540
|
</Note>
|
|
504
541
|
|
|
505
542
|
---
|
|
@@ -507,14 +544,14 @@ pull requests. Se `gh` não estiver instalado ou autenticado, a política falha
|
|
|
507
544
|
### `require-ci-green-before-stop`
|
|
508
545
|
|
|
509
546
|
**Evento:** Stop
|
|
510
|
-
**Padrão:** Nega a parada quando as verificações de CI estão falhando ou ainda em execução no branch atual. Verifica tanto
|
|
547
|
+
**Padrão:** Nega a parada quando as verificações de CI estão falhando ou ainda em execução no branch atual. Verifica tanto execuções de workflows do GitHub Actions quanto verificações de bots de terceiros (ex.: CodeRabbit, SonarCloud, Codecov). Trata conclusões `skipped` e `cancelled` como sucesso. Retorna uma mensagem informativa quando todas as verificações passam.
|
|
511
548
|
|
|
512
549
|
Sem parâmetros.
|
|
513
550
|
|
|
514
551
|
<Note>
|
|
515
552
|
Esta política requer que o [GitHub CLI](https://cli.github.com/) (`gh`) esteja instalado e autenticado.
|
|
516
|
-
Execute `gh auth login` com um token de acesso pessoal que tenha escopo `repo` para acesso de leitura
|
|
517
|
-
execuções de
|
|
553
|
+
Execute `gh auth login` com um token de acesso pessoal que tenha escopo `repo` para acesso de leitura a
|
|
554
|
+
execuções de workflows do Actions e à API de Checks. Se `gh` não estiver instalado ou autenticado, a política falha de forma aberta (fail-open) e reporta o motivo a Claude.
|
|
518
555
|
</Note>
|
|
519
556
|
|
|
520
557
|
---
|
|
@@ -523,7 +560,7 @@ execuções de workflow do Actions e à API de Verificações. Se `gh` não esti
|
|
|
523
560
|
|
|
524
561
|
## Desabilitando políticas individuais
|
|
525
562
|
|
|
526
|
-
Remova uma política específica de `enabledPolicies` na sua configuração, ou desative-a na aba Políticas do
|
|
563
|
+
Remova uma política específica de `enabledPolicies` na sua configuração, ou desative-a na aba Políticas do painel.
|
|
527
564
|
|
|
528
565
|
```json
|
|
529
566
|
{
|