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.
Files changed (177) hide show
  1. package/.next/standalone/.failproofai/policies/review-policies.mjs +4 -3
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/required-server-files.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  11. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  12. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  13. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  14. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  15. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  20. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  21. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  22. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  23. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  24. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  25. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  26. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  27. package/.next/standalone/.next/server/app/index.html +1 -1
  28. package/.next/standalone/.next/server/app/index.rsc +15 -15
  29. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  30. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  31. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  32. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
  33. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  34. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  35. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  38. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  41. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  44. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  45. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  48. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
  51. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
  52. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
  53. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0~kmh8w._.js → [root-of-the-server]__096k.db._.js} +2 -2
  54. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  55. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  56. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  57. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0rh.18_._.js → [root-of-the-server]__0kyh86x._.js} +2 -2
  58. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  59. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +2 -2
  60. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
  63. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
  64. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
  65. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  66. package/.next/standalone/.next/server/pages/404.html +2 -2
  67. package/.next/standalone/.next/server/pages/500.html +1 -1
  68. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  70. package/.next/standalone/.next/static/chunks/{0gbf4cphy8ksq.js → 0-dm_9a6nsc2l.js} +1 -1
  71. package/.next/standalone/.next/static/chunks/{12~yi9oj8av8p.js → 01pmw1-asbek~.js} +2 -2
  72. package/.next/standalone/.next/static/chunks/{0v.yd0kg_ld3r.js → 051m32nx~n5yr.js} +1 -1
  73. package/.next/standalone/.next/static/chunks/{09_k80d~cq2wg.js → 0a-yctdwn368y.js} +1 -1
  74. package/.next/standalone/.next/static/chunks/{0bvhsa6zva2o..js → 0ksdlt_1hucdm.js} +1 -1
  75. package/.next/standalone/.next/static/chunks/{01b~z8f1ws0rk.js → 0l-mu4okl-cj1.js} +1 -1
  76. package/.next/standalone/.next/static/chunks/{08t08igdql9yt.js → 0mazj-p-~2kc6.js} +1 -1
  77. package/.next/standalone/.next/static/chunks/0qakntsrpc~1j.js +6 -0
  78. package/.next/standalone/.next/static/chunks/{03rz6ykw-a2xi.js → 156zca6aewyr-.js} +1 -1
  79. package/.next/standalone/CHANGELOG.md +18 -0
  80. package/.next/standalone/bin/failproofai.mjs +91 -4
  81. package/.next/standalone/dist/cli.mjs +1156 -55
  82. package/.next/standalone/docs/ar/built-in-policies.mdx +140 -103
  83. package/.next/standalone/docs/ar/custom-policies.mdx +72 -72
  84. package/.next/standalone/docs/ar/examples.mdx +86 -33
  85. package/.next/standalone/docs/ar/getting-started.mdx +82 -29
  86. package/.next/standalone/docs/built-in-policies.mdx +3 -3
  87. package/.next/standalone/docs/de/built-in-policies.mdx +97 -60
  88. package/.next/standalone/docs/de/custom-policies.mdx +56 -56
  89. package/.next/standalone/docs/de/examples.mdx +72 -18
  90. package/.next/standalone/docs/de/getting-started.mdx +72 -20
  91. package/.next/standalone/docs/es/built-in-policies.mdx +91 -54
  92. package/.next/standalone/docs/es/custom-policies.mdx +55 -55
  93. package/.next/standalone/docs/es/examples.mdx +73 -19
  94. package/.next/standalone/docs/es/getting-started.mdx +72 -20
  95. package/.next/standalone/docs/fr/built-in-policies.mdx +99 -62
  96. package/.next/standalone/docs/fr/custom-policies.mdx +51 -51
  97. package/.next/standalone/docs/fr/examples.mdx +78 -24
  98. package/.next/standalone/docs/fr/getting-started.mdx +65 -13
  99. package/.next/standalone/docs/he/built-in-policies.mdx +139 -99
  100. package/.next/standalone/docs/he/custom-policies.mdx +75 -75
  101. package/.next/standalone/docs/he/examples.mdx +87 -33
  102. package/.next/standalone/docs/he/getting-started.mdx +84 -33
  103. package/.next/standalone/docs/hi/built-in-policies.mdx +203 -166
  104. package/.next/standalone/docs/hi/custom-policies.mdx +71 -70
  105. package/.next/standalone/docs/hi/examples.mdx +90 -36
  106. package/.next/standalone/docs/hi/getting-started.mdx +80 -27
  107. package/.next/standalone/docs/i18n/README.ar.md +69 -69
  108. package/.next/standalone/docs/i18n/README.de.md +46 -46
  109. package/.next/standalone/docs/i18n/README.es.md +42 -42
  110. package/.next/standalone/docs/i18n/README.fr.md +39 -39
  111. package/.next/standalone/docs/i18n/README.he.md +83 -83
  112. package/.next/standalone/docs/i18n/README.hi.md +69 -69
  113. package/.next/standalone/docs/i18n/README.it.md +72 -72
  114. package/.next/standalone/docs/i18n/README.ja.md +71 -71
  115. package/.next/standalone/docs/i18n/README.ko.md +52 -52
  116. package/.next/standalone/docs/i18n/README.pt-br.md +44 -44
  117. package/.next/standalone/docs/i18n/README.ru.md +66 -66
  118. package/.next/standalone/docs/i18n/README.tr.md +82 -83
  119. package/.next/standalone/docs/i18n/README.vi.md +70 -71
  120. package/.next/standalone/docs/i18n/README.zh.md +51 -51
  121. package/.next/standalone/docs/it/built-in-policies.mdx +115 -78
  122. package/.next/standalone/docs/it/custom-policies.mdx +69 -69
  123. package/.next/standalone/docs/it/examples.mdx +93 -39
  124. package/.next/standalone/docs/it/getting-started.mdx +73 -21
  125. package/.next/standalone/docs/ja/built-in-policies.mdx +155 -118
  126. package/.next/standalone/docs/ja/custom-policies.mdx +71 -71
  127. package/.next/standalone/docs/ja/examples.mdx +76 -22
  128. package/.next/standalone/docs/ja/getting-started.mdx +65 -13
  129. package/.next/standalone/docs/ko/built-in-policies.mdx +103 -66
  130. package/.next/standalone/docs/ko/custom-policies.mdx +67 -67
  131. package/.next/standalone/docs/ko/examples.mdx +87 -33
  132. package/.next/standalone/docs/ko/getting-started.mdx +61 -9
  133. package/.next/standalone/docs/pt-br/built-in-policies.mdx +72 -35
  134. package/.next/standalone/docs/pt-br/custom-policies.mdx +56 -56
  135. package/.next/standalone/docs/pt-br/examples.mdx +78 -24
  136. package/.next/standalone/docs/pt-br/getting-started.mdx +64 -12
  137. package/.next/standalone/docs/ru/built-in-policies.mdx +135 -98
  138. package/.next/standalone/docs/ru/custom-policies.mdx +82 -81
  139. package/.next/standalone/docs/ru/examples.mdx +77 -22
  140. package/.next/standalone/docs/ru/getting-started.mdx +74 -22
  141. package/.next/standalone/docs/tr/built-in-policies.mdx +126 -89
  142. package/.next/standalone/docs/tr/custom-policies.mdx +59 -60
  143. package/.next/standalone/docs/tr/examples.mdx +97 -42
  144. package/.next/standalone/docs/tr/getting-started.mdx +75 -23
  145. package/.next/standalone/docs/vi/built-in-policies.mdx +116 -81
  146. package/.next/standalone/docs/vi/custom-policies.mdx +68 -68
  147. package/.next/standalone/docs/vi/examples.mdx +93 -38
  148. package/.next/standalone/docs/vi/getting-started.mdx +74 -22
  149. package/.next/standalone/docs/zh/built-in-policies.mdx +117 -82
  150. package/.next/standalone/docs/zh/custom-policies.mdx +49 -49
  151. package/.next/standalone/docs/zh/examples.mdx +90 -36
  152. package/.next/standalone/docs/zh/getting-started.mdx +73 -21
  153. package/.next/standalone/package.json +1 -1
  154. package/.next/standalone/server.js +1 -1
  155. package/.next/standalone/src/auth/login.ts +104 -0
  156. package/.next/standalone/src/auth/logout.ts +50 -0
  157. package/.next/standalone/src/auth/token-store.ts +64 -0
  158. package/.next/standalone/src/hooks/builtin-policies.ts +27 -21
  159. package/.next/standalone/src/hooks/handler.ts +35 -15
  160. package/.next/standalone/src/relay/daemon.ts +362 -0
  161. package/.next/standalone/src/relay/pid.ts +76 -0
  162. package/.next/standalone/src/relay/queue.ts +225 -0
  163. package/bin/failproofai.mjs +91 -4
  164. package/dist/cli.mjs +1156 -55
  165. package/package.json +1 -1
  166. package/src/auth/login.ts +104 -0
  167. package/src/auth/logout.ts +50 -0
  168. package/src/auth/token-store.ts +64 -0
  169. package/src/hooks/builtin-policies.ts +27 -21
  170. package/src/hooks/handler.ts +35 -15
  171. package/src/relay/daemon.ts +362 -0
  172. package/src/relay/pid.ts +76 -0
  173. package/src/relay/queue.ts +225 -0
  174. package/.next/standalone/.next/static/chunks/0wlyoif4_kj_t.js +0 -6
  175. /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → r-wX0MuAfCjbhJm3phQc8}/_buildManifest.js +0 -0
  176. /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → r-wX0MuAfCjbhJm3phQc8}/_clientMiddlewareManifest.js +0 -0
  177. /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` | 개인 재정의 설정 (gitignore 처리됨) |
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 de agentes"
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 de 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.
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 geral
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 orientações práticas 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
+ 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 incluam a palavra-chave `sudo`. A correspondência de padrões é feita nos tokens de comando analisados, não na string bruta, para evitar bypass via injeção de operadores de shell.
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 essa configuração, `sudo systemctl status nginx` é permitido, mas `sudo rm /etc/hosts` é negado.
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 evita bypass via operadores de shell anexados (por exemplo, `sudo systemctl status x; rm -rf /` não corresponde a `sudo systemctl status *`).
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 são seguros para excluir recursivamente (ex: `/tmp`). |
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 desinstalem ou desabilitem o próprio failproofai (ex: `npm uninstall failproofai`, `failproofai policies --uninstall`).
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 que ela seja retornada ao Claude. Se um padrão de segredo for detectado, a política retorna uma decisão de deny que impede a saída de ser passada de volta.
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 chaves de API: Anthropic (`sk-ant-`), OpenAI (`sk-`), GitHub PATs (`ghp_`), chaves de acesso AWS (`AKIA`), chaves Stripe (`sk_live_`, `sk_test_`) e chaves Google API (`AIza`).
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 incorporadas (ex: `postgresql://user:password@host/db`).
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 de ambiente sensível de ser lida ou exposta por agentes.
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 imprimam variáveis de ambiente: `printenv`, `env`, `echo $VAR`.
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 se estiverem fora do cwd. |
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 escritas em arquivos comumente usados para chaves privadas e certificados: `id_rsa`, `id_ed25519`, `*.key`, `*.pem`, `*.p12`, `*.pfx`.
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 branches que não podem receber push diretamente. |
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 para todos os branches (desabilitando efetivamente esta política sem removê-la de `enabledPolicies`), defina `protectedBranches: []`.
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 branches que não podem ser obtidos diretamente via checkout. |
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 da política. Use o [`hint`](/pt-br/configuration#hint-cross-cutting) transversal para sugerir alternativas:
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 adicionado ao stage ao executar `git add -A` ou `git add .`. Não bloqueia o comando.
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 escrever arquivos maiores que 1024 KB.
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 de hook impõe um limite de 1 MB de stdin nos payloads. Para testar esta política com conteúdo pequeno, defina `thresholdKb` para um valor bem abaixo de 1024.
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 nega, as políticas seguintes na cadeia são ignoradas (deny interrompe o fluxo).
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: `gh` não instalado, sem remote git), a política permite com uma mensagem informativa explicando por que a verificação foi ignorada.
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, em stage ou não rastreados). Retorna uma mensagem informativa quando o diretório de trabalho está limpo.
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 por push ou quando o branch atual não tem um branch de rastreamento remoto. Sugere `git push -u` para criar um branch de rastreamento se necessário. Falha de forma aberta se nenhum remote estiver configurado.
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 o qual fazer push. |
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/mesclado. Instrui Claude a criar um PR com `gh pr create`.
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 ao Claude.
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 as execuções de workflow do GitHub Actions quanto as verificações de bots de terceiros (ex: CodeRabbit, SonarCloud, Codecov). Trata conclusões `skipped` como sucesso. Retorna uma mensagem informativa quando todas as verificações passam.
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 às
517
- execuções de workflow do Actions e à API de Verificações. Se `gh` não estiver instalado ou autenticado, a política falha de forma aberta e reporta o motivo ao Claude.
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 dashboard.
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
  {