failproofai 0.0.6-beta.2 → 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 (119) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  10. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  11. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  12. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  13. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  14. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  16. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  19. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  20. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  21. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  22. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  23. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  24. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  25. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  26. package/.next/standalone/.next/server/app/index.html +1 -1
  27. package/.next/standalone/.next/server/app/index.rsc +15 -15
  28. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  29. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  30. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  31. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
  32. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  33. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  34. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  37. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  40. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  43. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  44. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  47. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
  50. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
  51. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
  52. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__05akje6._.js → [root-of-the-server]__096k.db._.js} +2 -2
  53. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  54. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  55. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  56. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0i5kvry._.js → [root-of-the-server]__0kyh86x._.js} +2 -2
  57. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  58. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +2 -2
  59. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  60. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
  63. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
  64. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  65. package/.next/standalone/.next/server/pages/404.html +2 -2
  66. package/.next/standalone/.next/server/pages/500.html +1 -1
  67. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  69. package/.next/standalone/.next/static/chunks/{1052sguyd-.ka.js → 0-dm_9a6nsc2l.js} +1 -1
  70. package/.next/standalone/.next/static/chunks/{05j1px0r8yzh6.js → 01pmw1-asbek~.js} +2 -2
  71. package/.next/standalone/.next/static/chunks/{14cl9poem30dq.js → 051m32nx~n5yr.js} +1 -1
  72. package/.next/standalone/.next/static/chunks/{0badv41uxa56..js → 0a-yctdwn368y.js} +1 -1
  73. package/.next/standalone/.next/static/chunks/{0xpl.oscrakvx.js → 0l-mu4okl-cj1.js} +1 -1
  74. package/.next/standalone/.next/static/chunks/{00j0rr7rh8ef8.js → 0mazj-p-~2kc6.js} +1 -1
  75. package/.next/standalone/.next/static/chunks/0qakntsrpc~1j.js +6 -0
  76. package/.next/standalone/.next/static/chunks/{0npb~873.wvg3.js → 156zca6aewyr-.js} +1 -1
  77. package/.next/standalone/CHANGELOG.md +7 -0
  78. package/.next/standalone/bin/failproofai.mjs +91 -4
  79. package/.next/standalone/dist/cli.mjs +1155 -54
  80. package/.next/standalone/docs/ar/built-in-policies.mdx +118 -118
  81. package/.next/standalone/docs/built-in-policies.mdx +2 -2
  82. package/.next/standalone/docs/de/built-in-policies.mdx +48 -48
  83. package/.next/standalone/docs/es/built-in-policies.mdx +82 -82
  84. package/.next/standalone/docs/fr/built-in-policies.mdx +72 -72
  85. package/.next/standalone/docs/he/built-in-policies.mdx +129 -128
  86. package/.next/standalone/docs/hi/built-in-policies.mdx +178 -182
  87. package/.next/standalone/docs/it/built-in-policies.mdx +64 -64
  88. package/.next/standalone/docs/ja/built-in-policies.mdx +128 -128
  89. package/.next/standalone/docs/ko/built-in-policies.mdx +111 -111
  90. package/.next/standalone/docs/pt-br/built-in-policies.mdx +65 -65
  91. package/.next/standalone/docs/ru/built-in-policies.mdx +72 -72
  92. package/.next/standalone/docs/tr/built-in-policies.mdx +99 -99
  93. package/.next/standalone/docs/vi/built-in-policies.mdx +69 -72
  94. package/.next/standalone/docs/zh/built-in-policies.mdx +76 -78
  95. package/.next/standalone/package.json +1 -1
  96. package/.next/standalone/server.js +1 -1
  97. package/.next/standalone/src/auth/login.ts +104 -0
  98. package/.next/standalone/src/auth/logout.ts +50 -0
  99. package/.next/standalone/src/auth/token-store.ts +64 -0
  100. package/.next/standalone/src/hooks/builtin-policies.ts +22 -20
  101. package/.next/standalone/src/hooks/handler.ts +35 -15
  102. package/.next/standalone/src/relay/daemon.ts +362 -0
  103. package/.next/standalone/src/relay/pid.ts +76 -0
  104. package/.next/standalone/src/relay/queue.ts +225 -0
  105. package/bin/failproofai.mjs +91 -4
  106. package/dist/cli.mjs +1155 -54
  107. package/package.json +1 -1
  108. package/src/auth/login.ts +104 -0
  109. package/src/auth/logout.ts +50 -0
  110. package/src/auth/token-store.ts +64 -0
  111. package/src/hooks/builtin-policies.ts +22 -20
  112. package/src/hooks/handler.ts +35 -15
  113. package/src/relay/daemon.ts +362 -0
  114. package/src/relay/pid.ts +76 -0
  115. package/src/relay/queue.ts +225 -0
  116. package/.next/standalone/.next/static/chunks/0ijk_kek9_wyx.js +0 -6
  117. /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → r-wX0MuAfCjbhJm3phQc8}/_buildManifest.js +0 -0
  118. /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → r-wX0MuAfCjbhJm3phQc8}/_clientMiddlewareManifest.js +0 -0
  119. /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → r-wX0MuAfCjbhJm3phQc8}/_ssgManifest.js +0 -0
@@ -1,20 +1,20 @@
1
1
  ---
2
- title: 기본 제공 정책
3
- description: "에이전트의 일반적인 오류 패턴을 감지하는 30개의 기본 제공 정책"
2
+ title: 내장 정책
3
+ description: "일반적인 에이전트 오류 패턴을 감지하는 30가지 내장 정책"
4
4
  icon: shield
5
5
  ---
6
6
 
7
- failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30개의 기본 제공 정책이 포함되어 있습니다. 각 정책은 특정 훅 이벤트 유형 및 도구 이름에서 실행됩니다. 9개의 정책은 코드 작성 없이 동작을 조정할 수 있는 매개변수를 지원합니다. 4개의 워크플로 정책은 Claude가 종료되기 전에 커밋 → 푸시 → PR → CI 파이프라인을 강제합니다.
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
  |----------|----------|-----------|
17
- | [위험 명령어](#dangerous-commands) | block-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commands | PreToolUse |
17
+ | [위험한 명령어](#dangerous-commands) | block-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commands | PreToolUse |
18
18
  | [시크릿 (새니타이저)](#secrets-sanitizers) | sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokens | PostToolUse |
19
19
  | [환경](#environment) | block-env-files, protect-env-vars | PreToolUse |
20
20
  | [파일 접근](#file-access) | block-read-outside-cwd, block-secrets-write | PreToolUse |
@@ -22,37 +22,37 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
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
24
  | [패키지 매니저](#package-managers) | prefer-package-manager | PreToolUse |
25
- | [워크플로](#workflow) | require-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-ci-green-before-stop | Stop |
25
+ | [워크플로우](#workflow) | require-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-ci-green-before-stop | Stop |
26
26
 
27
- - **`block-`** — 에이전트의 진행을 차단합니다.
28
- - **`warn-`** — 에이전트가 스스로 수정할 수 있도록 추가 컨텍스트를 제공합니다.
29
- - **`sanitize-`** — 에이전트에게 전달되기 전에 도구 출력에서 민감한 데이터를 제거합니다.
27
+ - **`block-`** — 에이전트가 계속 진행하지 못하도록 차단합니다.
28
+ - **`warn-`** — 에이전트가 스스로 수정할 수 있도록 추가 맥락 정보를 제공합니다.
29
+ - **`sanitize-`** — 에이전트가 도구 출력을 받기 전에 민감한 데이터를 제거합니다.
30
30
  - **`require-`** — 조건이 충족될 때까지 Stop 이벤트를 차단합니다.
31
31
 
32
32
  ---
33
33
 
34
34
  <Tip>
35
- 모든 정책은 `policyParams`에서 선택적 `hint` 필드를 지원합니다. 힌트는 Claude가 보는 deny 또는 instruct 메시지에 추가되어, 정책 코드를 수정하지 않고도 실질적인 안내를 제공합니다. 기본 제공, 커스텀, 컨벤션 정책 모두에서 작동합니다. 자세한 내용은 [구성 → hint](/ko/configuration#hint-cross-cutting)를 참조하세요.
35
+ 모든 정책은 `policyParams`에서 선택적 `hint` 필드를 지원합니다. hint는 Claude가 보는 deny 또는 instruct 메시지에 추가되어, 정책 코드를 수정하지 않고도 실행 가능한 안내를 제공합니다. 내장 정책, 커스텀 정책, 컨벤션 정책 모두에서 사용할 수 있습니다. 자세한 내용은 [설정 → hint](/ko/configuration#hint-cross-cutting)를 참고하세요.
36
36
  </Tip>
37
37
 
38
38
  ---
39
39
 
40
- ## 위험 명령어
40
+ ## 위험한 명령어
41
41
 
42
- 에이전트가 되돌리기 어렵거나 호스트 시스템에 손상을 줄 수 있는 작업을 실행하지 못하도록 방지합니다.
42
+ 에이전트가 실행하기 어렵거나 호스트 시스템에 손상을 줄 수 있는 작업을 실행하지 못하도록 방지합니다.
43
43
 
44
44
  ### `block-sudo`
45
45
 
46
46
  **이벤트:** PreToolUse (Bash)
47
- **기본 동작:** `sudo` 명령어가 포함된 모든 명령을 차단합니다.
47
+ **기본값:** `sudo` 명령어가 포함된 모든 명령을 차단합니다.
48
48
 
49
- `sudo` 키워드가 포함된 호출을 차단합니다. 패턴 매칭은 원시 문자열이 아닌 파싱된 명령어 토큰을 기준으로 수행되므로, 셸 연산자 주입을 통한 우회를 방지합니다.
49
+ `sudo` 키워드가 포함된 명령 실행을 차단합니다. 패턴 매칭은 원시 문자열이 아닌 파싱된 명령 토큰을 기준으로 수행되므로, 셸 연산자 삽입을 통한 우회를 방지합니다.
50
50
 
51
- **매개변수:**
51
+ **파라미터:**
52
52
 
53
- | 매개변수 | 타입 | 기본값 | 설명 |
53
+ | 파라미터 | 타입 | 기본값 | 설명 |
54
54
  |-------|------|---------|-------------|
55
- | `allowPatterns` | `string[]` | `[]` | 허용되는 정확한 명령어 접두사입니다. 각 항목은 파싱된 argv 토큰과 매칭됩니다. |
55
+ | `allowPatterns` | `string[]` | `[]` | 허용되는 정확한 명령 접두사. 각 항목은 파싱된 argv 토큰과 대조됩니다. |
56
56
 
57
57
  **예시:**
58
58
 
@@ -66,10 +66,10 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
66
66
  }
67
67
  ```
68
68
 
69
- 설정에서는 `sudo systemctl status nginx`는 허용되지만, `sudo rm /etc/hosts`는 차단됩니다.
69
+ 설정에서 `sudo systemctl status nginx`는 허용되지만, `sudo rm /etc/hosts`는 차단됩니다.
70
70
 
71
71
  <Note>
72
- 패턴은 원시 명령어 문자열이 아닌 파싱된 토큰과 매칭됩니다. 이를 통해 추가된 연산자를 통한 우회를 방지합니다 (예: `sudo systemctl status x; rm -rf /`는 `sudo systemctl status *`와 매칭되지 않습니다).
72
+ 패턴은 원시 명령 문자열이 아닌 파싱된 토큰과 대조됩니다. 이를 통해 셸 연산자 추가를 통한 우회를 방지합니다 (예: `sudo systemctl status x; rm -rf /`는 `sudo systemctl status *`와 매칭되지 않습니다).
73
73
  </Note>
74
74
 
75
75
  ---
@@ -77,13 +77,13 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
77
77
  ### `block-rm-rf`
78
78
 
79
79
  **이벤트:** PreToolUse (Bash)
80
- **기본 동작:** `rm -rf`, `rm -fr` 및 유사한 재귀 삭제 형태를 차단합니다.
80
+ **기본값:** `rm -rf`, `rm -fr` 및 유사한 재귀적 삭제 형식을 차단합니다.
81
81
 
82
- **매개변수:**
82
+ **파라미터:**
83
83
 
84
- | 매개변수 | 타입 | 기본값 | 설명 |
84
+ | 파라미터 | 타입 | 기본값 | 설명 |
85
85
  |-------|------|---------|-------------|
86
- | `allowPaths` | `string[]` | `[]` | 재귀 삭제가 허용되는 안전한 경로 (예: `/tmp`). |
86
+ | `allowPaths` | `string[]` | `[]` | 재귀적 삭제가 허용되는 경로 (예: `/tmp`). |
87
87
 
88
88
  **예시:**
89
89
 
@@ -102,42 +102,42 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
102
102
  ### `block-curl-pipe-sh`
103
103
 
104
104
  **이벤트:** PreToolUse (Bash)
105
- **기본 동작:** `curl <url> | bash`, `curl <url> | sh`, `wget <url> | bash` 및 유사한 패턴을 차단합니다.
105
+ **기본값:** `curl <url> | bash`, `curl <url> | sh`, `wget <url> | bash` 및 유사한 패턴을 차단합니다.
106
106
 
107
- 매개변수 없음.
107
+ 파라미터 없음.
108
108
 
109
109
  ---
110
110
 
111
111
  ### `block-failproofai-commands`
112
112
 
113
113
  **이벤트:** PreToolUse (Bash)
114
- **기본 동작:** failproofai 자체를 제거하거나 비활성화하는 명령어를 차단합니다 (예: `npm uninstall failproofai`, `failproofai policies --uninstall`).
114
+ **기본값:** failproofai 자체를 제거하거나 비활성화하는 명령(예: `npm uninstall failproofai`, `failproofai policies --uninstall`)을 차단합니다.
115
115
 
116
- 매개변수 없음.
116
+ 파라미터 없음.
117
117
 
118
118
  ---
119
119
 
120
120
  ## 시크릿 (새니타이저)
121
121
 
122
- 에이전트가 자격 증명을 컨텍스트나 출력에 노출하지 못하도록 방지합니다. 새니타이저 정책은 **PostToolUse** 이벤트에서 실행됩니다. Claude가 Bash 명령어를 실행하거나, 파일을 읽거나, 도구를 호출할 정책들은 출력이 Claude에게 반환되기 전에 검사합니다. 시크릿 패턴이 감지되면, 정책은 출력이 전달되지 않도록 차단 결정을 반환합니다.
122
+ 에이전트가 자격 증명을 컨텍스트나 출력에 노출하지 못하도록 방지합니다. 새니타이저 정책은 **PostToolUse** 이벤트에서 실행됩니다. Claude가 Bash 명령을 실행하거나, 파일을 읽거나, 도구를 호출하면정책들이 출력값을 Claude 반환하기 전에 검사합니다. 시크릿 패턴이 감지되면 해당 정책은 출력이 다시 전달되지 않도록 deny 결정을 반환합니다.
123
123
 
124
124
  ### `sanitize-jwt`
125
125
 
126
126
  **이벤트:** PostToolUse (모든 도구)
127
- **기본 동작:** JWT 토큰(`.`으로 구분된 3개의 base64url 세그먼트)을 마스킹합니다.
127
+ **기본값:** JWT 토큰(`.`으로 구분된 개의 base64url 세그먼트)을 마스킹합니다.
128
128
 
129
- 매개변수 없음.
129
+ 파라미터 없음.
130
130
 
131
131
  ---
132
132
 
133
133
  ### `sanitize-api-keys`
134
134
 
135
135
  **이벤트:** PostToolUse (모든 도구)
136
- **기본 동작:** 일반적인 API 키 형식을 마스킹합니다: Anthropic(`sk-ant-`), OpenAI(`sk-`), GitHub PAT(`ghp_`), AWS 액세스 키(`AKIA`), Stripe 키(`sk_live_`, `sk_test_`), Google API 키(`AIza`).
136
+ **기본값:** 일반적인 API 키 형식을 마스킹합니다: Anthropic (`sk-ant-`), OpenAI (`sk-`), GitHub PAT (`ghp_`), AWS 액세스 키 (`AKIA`), Stripe 키 (`sk_live_`, `sk_test_`), Google API 키 (`AIza`).
137
137
 
138
- **매개변수:**
138
+ **파라미터:**
139
139
 
140
- | 매개변수 | 타입 | 기본값 | 설명 |
140
+ | 파라미터 | 타입 | 기본값 | 설명 |
141
141
  |-------|------|---------|-------------|
142
142
  | `additionalPatterns` | `{ regex: string; label: string }[]` | `[]` | 시크릿으로 처리할 추가 정규식 패턴. |
143
143
 
@@ -161,27 +161,27 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
161
161
  ### `sanitize-connection-strings`
162
162
 
163
163
  **이벤트:** PostToolUse (모든 도구)
164
- **기본 동작:** 자격 증명이 포함된 데이터베이스 연결 문자열을 마스킹합니다 (예: `postgresql://user:password@host/db`).
164
+ **기본값:** 자격 증명이 포함된 데이터베이스 연결 문자열(예: `postgresql://user:password@host/db`)을 마스킹합니다.
165
165
 
166
- 매개변수 없음.
166
+ 파라미터 없음.
167
167
 
168
168
  ---
169
169
 
170
170
  ### `sanitize-private-key-content`
171
171
 
172
172
  **이벤트:** PostToolUse (모든 도구)
173
- **기본 동작:** PEM 블록(`-----BEGIN PRIVATE KEY-----`, `-----BEGIN RSA PRIVATE KEY-----` 등)을 마스킹합니다.
173
+ **기본값:** PEM 블록(`-----BEGIN PRIVATE KEY-----`, `-----BEGIN RSA PRIVATE KEY-----` 등)을 마스킹합니다.
174
174
 
175
- 매개변수 없음.
175
+ 파라미터 없음.
176
176
 
177
177
  ---
178
178
 
179
179
  ### `sanitize-bearer-tokens`
180
180
 
181
181
  **이벤트:** PostToolUse (모든 도구)
182
- **기본 동작:** 토큰이 20자 이상인 `Authorization: Bearer <token>` 헤더를 마스킹합니다.
182
+ **기본값:** 토큰이 20자 이상인 `Authorization: Bearer <token>` 헤더를 마스킹합니다.
183
183
 
184
- 매개변수 없음.
184
+ 파라미터 없음.
185
185
 
186
186
  ---
187
187
 
@@ -192,37 +192,37 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
192
192
  ### `block-env-files`
193
193
 
194
194
  **이벤트:** PreToolUse (Bash, Read)
195
- **기본 동작:** `cat .env`, `.env`를 파일 경로로 사용하는 `Read` 도구 호출 등을 통한 `.env` 파일 읽기를 차단합니다.
195
+ **기본값:** `cat .env`, 파일 경로가 `.env`인 `Read` 도구 호출 `.env` 파일을 읽는 것을 차단합니다.
196
196
 
197
- `.envrc`나 다른 환경 관련 파일은 차단하지 않으며, 정확히 `.env`라는 이름의 파일만 차단합니다.
197
+ `.envrc`나 다른 환경 관련 파일은 차단하지 않으며, 정확히 `.env`로 명명된 파일만 차단합니다.
198
198
 
199
- 매개변수 없음.
199
+ 파라미터 없음.
200
200
 
201
201
  ---
202
202
 
203
203
  ### `protect-env-vars`
204
204
 
205
205
  **이벤트:** PreToolUse (Bash)
206
- **기본 동작:** 환경 변수를 출력하는 명령어를 차단합니다: `printenv`, `env`, `echo $VAR`.
206
+ **기본값:** 환경 변수를 출력하는 명령(`printenv`, `env`, `echo $VAR`)을 차단합니다.
207
207
 
208
- 매개변수 없음.
208
+ 파라미터 없음.
209
209
 
210
210
  ---
211
211
 
212
212
  ## 파일 접근
213
213
 
214
- 에이전트가 프로젝트 경계 내에서만 작업하고 민감한 파일에 접근하지 못하도록 합니다.
214
+ 에이전트가 프로젝트 경계 내에서만 작업하고 민감한 파일에 접근하지 못하도록 유지합니다.
215
215
 
216
216
  ### `block-read-outside-cwd`
217
217
 
218
218
  **이벤트:** PreToolUse (Read, Bash)
219
- **기본 동작:** 현재 작업 디렉터리(프로젝트 루트) 외부의 파일 읽기를 차단합니다.
219
+ **기본값:** 현재 작업 디렉터리(프로젝트 루트) 외부의 파일을 읽는 것을 차단합니다.
220
220
 
221
- **매개변수:**
221
+ **파라미터:**
222
222
 
223
- | 매개변수 | 타입 | 기본값 | 설명 |
223
+ | 파라미터 | 타입 | 기본값 | 설명 |
224
224
  |-------|------|---------|-------------|
225
- | `allowPaths` | `string[]` | `[]` | cwd 외부라도 허용되는 절대 경로 접두사. |
225
+ | `allowPaths` | `string[]` | `[]` | cwd 외부에 있더라도 허용되는 절대 경로 접두사. |
226
226
 
227
227
  **예시:**
228
228
 
@@ -241,13 +241,13 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
241
241
  ### `block-secrets-write`
242
242
 
243
243
  **이벤트:** PreToolUse (Write, Edit)
244
- **기본 동작:** 개인 키 및 인증서에 일반적으로 사용되는 파일에 대한 쓰기를 차단합니다: `id_rsa`, `id_ed25519`, `*.key`, `*.pem`, `*.p12`, `*.pfx`.
244
+ **기본값:** 개인 키 및 인증서에 일반적으로 사용되는 파일(`id_rsa`, `id_ed25519`, `*.key`, `*.pem`, `*.p12`, `*.pfx`)에 대한 쓰기를 차단합니다.
245
245
 
246
- **매개변수:**
246
+ **파라미터:**
247
247
 
248
- | 매개변수 | 타입 | 기본값 | 설명 |
248
+ | 파라미터 | 타입 | 기본값 | 설명 |
249
249
  |-------|------|---------|-------------|
250
- | `additionalPatterns` | `string[]` | `[]` | 차단할 추가 파일명 패턴 (glob 형식). |
250
+ | `additionalPatterns` | `string[]` | `[]` | 차단할 추가 파일명 패턴 (글로브 방식). |
251
251
 
252
252
  **예시:**
253
253
 
@@ -270,11 +270,11 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
270
270
  ### `block-push-master`
271
271
 
272
272
  **이벤트:** PreToolUse (Bash)
273
- **기본 동작:** `git push origin main` 및 `git push origin master`를 차단합니다.
273
+ **기본값:** `git push origin main` 및 `git push origin master`를 차단합니다.
274
274
 
275
- **매개변수:**
275
+ **파라미터:**
276
276
 
277
- | 매개변수 | 타입 | 기본값 | 설명 |
277
+ | 파라미터 | 타입 | 기본값 | 설명 |
278
278
  |-------|------|---------|-------------|
279
279
  | `protectedBranches` | `string[]` | `["main", "master"]` | 직접 푸시할 수 없는 브랜치 이름. |
280
280
 
@@ -291,7 +291,7 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
291
291
  ```
292
292
 
293
293
  <Tip>
294
- 모든 브랜치로의 푸시를 허용하려면 (`enabledPolicies`에서 제거하지 않고 이 정책을 사실상 비활성화), `protectedBranches: []`로 설정하세요.
294
+ `enabledPolicies`에서 제거하지 않고 이 정책을 사실상 비활성화하려면(모든 브랜치에 푸시 허용), `protectedBranches: []`로 설정하세요.
295
295
  </Tip>
296
296
 
297
297
  ---
@@ -299,11 +299,11 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
299
299
  ### `block-work-on-main`
300
300
 
301
301
  **이벤트:** PreToolUse (Bash)
302
- **기본 동작:** `main` 또는 `master` 브랜치로의 직접 체크아웃을 차단합니다.
302
+ **기본값:** `main` 또는 `master` 브랜치를 직접 체크아웃하는 것을 차단합니다.
303
303
 
304
- **매개변수:**
304
+ **파라미터:**
305
305
 
306
- | 매개변수 | 타입 | 기본값 | 설명 |
306
+ | 파라미터 | 타입 | 기본값 | 설명 |
307
307
  |-------|------|---------|-------------|
308
308
  | `protectedBranches` | `string[]` | `["main", "master"]` | 직접 체크아웃할 수 없는 브랜치 이름. |
309
309
 
@@ -312,9 +312,9 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
312
312
  ### `block-force-push`
313
313
 
314
314
  **이벤트:** PreToolUse (Bash)
315
- **기본 동작:** `git push --force` 및 `git push -f`를 차단합니다.
315
+ **기본값:** `git push --force` 및 `git push -f`를 차단합니다.
316
316
 
317
- 정책별 매개변수는 없습니다. 대안을 제안하려면 공통 [`hint`](/ko/configuration#hint-cross-cutting)를 사용하세요:
317
+ 정책별 파라미터는 없습니다. 공통 [`hint`](/ko/configuration#hint-cross-cutting)를 사용하여 대안을 제안할 수 있습니다:
318
318
 
319
319
  ```json
320
320
  {
@@ -331,64 +331,64 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
331
331
  ### `warn-git-amend`
332
332
 
333
333
  **이벤트:** PreToolUse (Bash)
334
- **기본 동작:** `git commit --amend` 실행 시 Claude에게 신중하게 진행하도록 안내합니다. 명령어를 차단하지는 않습니다.
334
+ **기본값:** `git commit --amend` 실행 시 Claude에게 주의하여 진행하도록 안내합니다. 명령을 차단하지는 않습니다.
335
335
 
336
- 매개변수 없음.
336
+ 파라미터 없음.
337
337
 
338
338
  ---
339
339
 
340
340
  ### `warn-git-stash-drop`
341
341
 
342
342
  **이벤트:** PreToolUse (Bash)
343
- **기본 동작:** `git stash drop` 실행 전에 Claude에게 확인을 요청합니다. 명령어를 차단하지는 않습니다.
343
+ **기본값:** `git stash drop` 실행 Claude에게 확인하도록 안내합니다. 명령을 차단하지는 않습니다.
344
344
 
345
- 매개변수 없음.
345
+ 파라미터 없음.
346
346
 
347
347
  ---
348
348
 
349
349
  ### `warn-all-files-staged`
350
350
 
351
351
  **이벤트:** PreToolUse (Bash)
352
- **기본 동작:** `git add -A` 또는 `git add .` 실행 시 Claude에게 스테이징할 내용을 검토하도록 안내합니다. 명령어를 차단하지는 않습니다.
352
+ **기본값:** `git add -A` 또는 `git add .` 실행 시 Claude에게 스테이징할 내용을 검토하도록 안내합니다. 명령을 차단하지는 않습니다.
353
353
 
354
- 매개변수 없음.
354
+ 파라미터 없음.
355
355
 
356
356
  ---
357
357
 
358
358
  ## 데이터베이스
359
359
 
360
- 데이터베이스에 대해 실행되기 전에 파괴적인 SQL 작업을 감지합니다.
360
+ 데이터베이스에 실행되기 전에 파괴적인 SQL 작업을 감지합니다.
361
361
 
362
362
  ### `warn-destructive-sql`
363
363
 
364
364
  **이벤트:** PreToolUse (Bash)
365
- **기본 동작:** `DROP TABLE`, `DROP DATABASE`, 또는 `WHERE` 없는 `DELETE`가 포함된 SQL 실행 전에 Claude에게 확인을 요청합니다.
365
+ **기본값:** `DROP TABLE`, `DROP DATABASE`, 또는 `WHERE` 절이 없는 `DELETE`가 포함된 SQL 실행 Claude에게 확인하도록 안내합니다.
366
366
 
367
- 매개변수 없음.
367
+ 파라미터 없음.
368
368
 
369
369
  ---
370
370
 
371
371
  ### `warn-schema-alteration`
372
372
 
373
373
  **이벤트:** PreToolUse (Bash)
374
- **기본 동작:** `ALTER TABLE` 구문 실행 전에 Claude에게 확인을 요청합니다.
374
+ **기본값:** `ALTER TABLE` 구문 실행 Claude에게 확인하도록 안내합니다.
375
375
 
376
- 매개변수 없음.
376
+ 파라미터 없음.
377
377
 
378
378
  ---
379
379
 
380
380
  ## 경고
381
381
 
382
- 잠재적으로 위험하지만 파괴적이지 않은 작업 전에 에이전트에게 추가 컨텍스트를 제공합니다.
382
+ 잠재적으로 위험하지만 파괴적이지 않은 작업 전에 에이전트에게 추가 맥락을 제공합니다.
383
383
 
384
384
  ### `warn-large-file-write`
385
385
 
386
386
  **이벤트:** PreToolUse (Write)
387
- **기본 동작:** 1024 KB보다 큰 파일을 쓰기 전에 Claude에게 확인을 요청합니다.
387
+ **기본값:** 1024 KB보다 큰 파일을 쓰기 전에 Claude에게 확인하도록 안내합니다.
388
388
 
389
- **매개변수:**
389
+ **파라미터:**
390
390
 
391
- | 매개변수 | 타입 | 기본값 | 설명 |
391
+ | 파라미터 | 타입 | 기본값 | 설명 |
392
392
  |-------|------|---------|-------------|
393
393
  | `thresholdKb` | `number` | `1024` | 경고가 발생하는 파일 크기 임계값 (킬로바이트). |
394
394
 
@@ -405,7 +405,7 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
405
405
  ```
406
406
 
407
407
  <Note>
408
- 훅 핸들러는 페이로드에 대해 1 MB stdin 제한을 적용합니다. 작은 콘텐츠로 이 정책을 테스트하려면 `thresholdKb`를 1024보다 훨씬 낮은 값으로 설정하세요.
408
+ 훅 핸들러는 페이로드에 대해 1 MB stdin 제한을 적용합니다. 소용량 콘텐츠로 이 정책을 테스트하려면 `thresholdKb`를 1024보다 훨씬 낮은 값으로 설정하세요.
409
409
  </Note>
410
410
 
411
411
  ---
@@ -413,27 +413,27 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
413
413
  ### `warn-package-publish`
414
414
 
415
415
  **이벤트:** PreToolUse (Bash)
416
- **기본 동작:** `npm publish` 실행 전에 Claude에게 확인을 요청합니다.
416
+ **기본값:** `npm publish` 실행 Claude에게 확인하도록 안내합니다.
417
417
 
418
- 매개변수 없음.
418
+ 파라미터 없음.
419
419
 
420
420
  ---
421
421
 
422
422
  ### `warn-background-process`
423
423
 
424
424
  **이벤트:** PreToolUse (Bash)
425
- **기본 동작:** `nohup`, `&`, `disown`, 또는 `screen`을 통해 백그라운드 프로세스를 시작할 때 Claude에게 주의를 촉구합니다.
425
+ **기본값:** `nohup`, `&`, `disown`, `screen`을 통해 백그라운드 프로세스를 시작할 때 Claude에게 주의하도록 안내합니다.
426
426
 
427
- 매개변수 없음.
427
+ 파라미터 없음.
428
428
 
429
429
  ---
430
430
 
431
431
  ### `warn-global-package-install`
432
432
 
433
433
  **이벤트:** PreToolUse (Bash)
434
- **기본 동작:** 가상 환경 없이 `npm install -g`, `yarn global add`, 또는 `pip install` 실행 전에 Claude에게 확인을 요청합니다.
434
+ **기본값:** `npm install -g`, `yarn global add`, 또는 가상 환경 없이 `pip install` 실행 Claude에게 확인하도록 안내합니다.
435
435
 
436
- 매개변수 없음.
436
+ 파라미터 없음.
437
437
 
438
438
  ---
439
439
 
@@ -444,18 +444,18 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
444
444
  ### `prefer-package-manager`
445
445
 
446
446
  **이벤트:** PreToolUse (Bash)
447
- **기본 동작:** 비활성화됨. 활성화 시, `allowed` 목록에 없는 패키지 매니저 명령어를 차단하고 허용된 매니저를 사용하도록 Claude에게 안내합니다.
447
+ **기본값:** 비활성화됨. 활성화 시, `allowed` 목록에 없는 패키지 매니저 명령을 차단하고 허용된 매니저를 사용하도록 Claude에게 명령을 재작성하도록 안내합니다.
448
448
 
449
449
  감지 대상: pip, pip3, python -m pip, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo.
450
450
 
451
- | 매개변수 | 타입 | 기본값 | 설명 |
451
+ | 파라미터 | 타입 | 기본값 | 설명 |
452
452
  |-----------|------|---------|-------------|
453
- | `allowed` | string[] | `[]` | 허용된 패키지 매니저 이름. 이 목록에 없는 감지된 매니저는 차단됩니다. 비어 있으면 정책이 동작하지 않습니다. |
454
- | `blocked` | string[] | `[]` | 기본 목록 외에 추가로 차단할 매니저 이름 (예: `['pdm', 'pipx']`). |
453
+ | `allowed` | string[] | `[]` | 허용되는 패키지 매니저 이름. 이 목록에 없는 감지된 매니저는 차단됩니다. 비어 있으면 정책이 동작하지 않습니다. |
454
+ | `blocked` | string[] | `[]` | 내장 목록 외에 추가로 차단할 매니저 이름 (예: `['pdm', 'pipx']`). |
455
455
 
456
- 기본 차단 목록: pip, pip3, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo. 이 목록에 없는 매니저를 추가하려면 `blocked`를 사용하세요.
456
+ 내장 차단 목록에는 pip, pip3, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo 포함됩니다. `blocked`를 사용하여 이 목록에 없는 매니저를 추가할 있습니다.
457
457
 
458
- **설정 예시:**
458
+ **예시 설정:**
459
459
 
460
460
  ```json
461
461
  {
@@ -469,46 +469,46 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
469
469
  }
470
470
  ```
471
471
 
472
- 설정에서는 `pip install flask`와 `pdm install flask` 모두 차단되며, Claude에게 `uv` 또는 `bun`을 사용하라는 메시지가 표시됩니다. `uv pip install flask`와 같은 명령어는 `uv`가 허용 목록에 있고 먼저 확인되므로 허용됩니다.
472
+ 설정에서 `pip install flask`와 `pdm install flask`는 모두 차단되며, `uv` 또는 `bun`을 사용하도록 안내하는 메시지가 표시됩니다. `uv pip install flask`와 같은 명령은 `uv`가 허용 목록에 있고 우선적으로 확인되므로 허용됩니다.
473
473
 
474
474
  ---
475
475
 
476
476
  ## AI 동작
477
477
 
478
- 에이전트가 멈추거나 예기치 않게 동작하는 경우를 감지합니다.
478
+ 에이전트가 루프에 빠지거나 예상치 못한 동작을 보일 때 감지합니다.
479
479
 
480
480
  ### `warn-repeated-tool-calls`
481
481
 
482
482
  **이벤트:** PreToolUse (모든 도구)
483
- **기본 동작:** 동일한 도구가 동일한 매개변수로 3회 이상 호출될 때 Claude에게 재고를 권유합니다. 이는 에이전트가 루프에 빠진 일반적인 징후입니다.
483
+ **기본값:** 동일한 도구가 동일한 파라미터로 3회 이상 호출될 때 Claude에게 재고하도록 안내합니다. 이는 에이전트가 루프에 빠졌다는 일반적인 신호입니다.
484
484
 
485
- 매개변수 없음.
485
+ 파라미터 없음.
486
486
 
487
487
  ---
488
488
 
489
- ## 워크플로
489
+ ## 워크플로우
490
490
 
491
- 세션 종료 시 규율 있는 워크플로를 강제합니다. 이 정책들은 **Stop** 이벤트에서 실행되며, 각 조건이 충족될 때까지 Claude의 종료를 차단합니다. 커밋 → 푸시 → PR → CI의 자연스러운 의존성 체인을 따릅니다. 정책이 차단되면 체인의 이후 정책은 건너뜁니다 (차단 단락).
491
+ 세션 종료 시 규율 있는 워크플로우를 강제합니다. 이 정책들은 **Stop** 이벤트에서 실행되며, 각 조건이 충족될 때까지 Claude의 중단을 차단합니다. 커밋 → 푸시 → PR → CI의 자연스러운 의존성 체인을 따릅니다. 정책이 deny를 반환하면 이후 정책들은 건너뜁니다 (deny 단락 평가).
492
492
 
493
- 모든 워크플로 정책은 **fail-open** 방식입니다: 필요한 도구를 사용할 수 없는 경우 (예: `gh`가 설치되지 않음, git 원격 없음), 정책은 검사가 건너뛰어진 이유를 설명하는 안내 메시지와 함께 허용합니다.
493
+ 모든 워크플로우 정책은 **fail-open** 방식입니다: 필요한 도구를 사용할 수 없는 경우(예: `gh` 미설치, git 원격 없음), 정책은 검사가 건너뛰어진 이유를 설명하는 안내 메시지와 함께 허용합니다.
494
494
 
495
495
  ### `require-commit-before-stop`
496
496
 
497
497
  **이벤트:** Stop
498
- **기본 동작:** 커밋되지 않은 변경 사항(수정됨, 스테이징됨, 추적되지 않은 파일)이 있을 때 종료를 차단합니다. 작업 디렉터리가 깨끗할 때는 안내 메시지를 반환합니다.
498
+ **기본값:** 커밋되지 않은 변경사항(수정됨, 스테이징됨, 추적되지 않은 파일)이 있을 때 중단을 차단합니다. 작업 디렉터리가 깨끗한 경우 안내 메시지를 반환합니다.
499
499
 
500
- 매개변수 없음.
500
+ 파라미터 없음.
501
501
 
502
502
  ---
503
503
 
504
504
  ### `require-push-before-stop`
505
505
 
506
506
  **이벤트:** Stop
507
- **기본 동작:** 푸시되지 않은 커밋이 있거나 현재 브랜치에 원격 추적 브랜치가 없을 때 종료를 차단합니다. 필요한 경우 추적 브랜치를 생성하기 위해 `git push -u`를 제안합니다. 원격이 설정되어 있지 않으면 fail-open 처리됩니다.
507
+ **기본값:** 푸시되지 않은 커밋이 있거나 현재 브랜치에 원격 추적 브랜치가 없을 때 중단을 차단합니다. 필요한 경우 추적 브랜치를 생성하도록 `git push -u`를 제안합니다. 원격이 설정되지 않은 경우 fail-open 방식으로 동작합니다.
508
508
 
509
- **매개변수:**
509
+ **파라미터:**
510
510
 
511
- | 매개변수 | 타입 | 기본값 | 설명 |
511
+ | 파라미터 | 타입 | 기본값 | 설명 |
512
512
  |-------|------|---------|-------------|
513
513
  | `remote` | `string` | `"origin"` | 푸시할 원격 이름. |
514
514
 
@@ -529,13 +529,13 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
529
529
  ### `require-pr-before-stop`
530
530
 
531
531
  **이벤트:** Stop
532
- **기본 동작:** 현재 브랜치에 대한 풀 리퀘스트가 없거나 기존 PR이 닫혔거나 병합된 경우 종료를 차단합니다. `gh pr create`로 PR을 생성하도록 Claude에게 안내합니다.
532
+ **기본값:** 현재 브랜치에 풀 리퀘스트가 없거나 기존 PR이 closed/merged 상태일 중단을 차단합니다. `gh pr create`로 PR을 생성하도록 Claude에게 안내합니다.
533
533
 
534
- 매개변수 없음.
534
+ 파라미터 없음.
535
535
 
536
536
  <Note>
537
- 정책은 [GitHub CLI](https://cli.github.com/) (`gh`)가 설치되고 인증된 상태여야 합니다.
538
- 리퀘스트에 대한 읽기 접근을 위해 `repo` 스코프를 가진 개인 액세스 토큰으로 `gh auth login`을 실행하세요. `gh`가 설치되지 않았거나 인증되지 않은 경우, 정책은 fail-open 처리되며 그 이유를 Claude에게 보고합니다.
537
+ 정책을 사용하려면 [GitHub CLI](https://cli.github.com/) (`gh`)가 설치되어 있고 인증되어 있어야 합니다.
538
+ 리퀘스트 읽기 권한을 위해 `repo` 스코프를 가진 개인 액세스 토큰으로 `gh auth login`을 실행하세요. `gh`가 설치되어 있지 않거나 인증되지 않은 경우, 정책은 fail-open 방식으로 동작하며 그 이유를 Claude에게 보고합니다.
539
539
  </Note>
540
540
 
541
541
  ---
@@ -543,13 +543,13 @@ failproofai에는 에이전트의 일반적인 오류 패턴을 감지하는 30
543
543
  ### `require-ci-green-before-stop`
544
544
 
545
545
  **이벤트:** Stop
546
- **기본 동작:** 현재 브랜치의 CI 검사가 실패하거나 아직 실행 중일 때 종료를 차단합니다. GitHub Actions 워크플로 실행과 서드파티 봇 검사(예: CodeRabbit, SonarCloud, Codecov) 모두 확인합니다. `skipped` 결론은 성공으로 처리합니다. 모든 검사가 통과되면 안내 메시지를 반환합니다.
546
+ **기본값:** 현재 브랜치의 CI 검사가 실패하거나 아직 실행 중일 때 중단을 차단합니다. GitHub Actions 워크플로우 실행과 서드파티 봇 검사(예: CodeRabbit, SonarCloud, Codecov) 모두를 확인합니다. `skipped` `cancelled` 결과는 성공으로 처리합니다. 모든 검사가 통과되면 안내 메시지를 반환합니다.
547
547
 
548
- 매개변수 없음.
548
+ 파라미터 없음.
549
549
 
550
550
  <Note>
551
- 정책은 [GitHub CLI](https://cli.github.com/) (`gh`)가 설치되고 인증된 상태여야 합니다.
552
- Actions 워크플로 실행 및 Checks API에 대한 읽기 접근을 위해 `repo` 스코프를 가진 개인 액세스 토큰으로 `gh auth login`을 실행하세요. `gh`가 설치되지 않았거나 인증되지 않은 경우, 정책은 fail-open 처리되며 그 이유를 Claude에게 보고합니다.
551
+ 정책을 사용하려면 [GitHub CLI](https://cli.github.com/) (`gh`)가 설치되어 있고 인증되어 있어야 합니다.
552
+ Actions 워크플로우 실행 및 Checks API에 대한 읽기 권한을 위해 `repo` 스코프를 가진 개인 액세스 토큰으로 `gh auth login`을 실행하세요. `gh`가 설치되어 있지 않거나 인증되지 않은 경우, 정책은 fail-open 방식으로 동작하며 그 이유를 Claude에게 보고합니다.
553
553
  </Note>
554
554
 
555
555
  ---
@@ -558,7 +558,7 @@ Actions 워크플로 실행 및 Checks API에 대한 읽기 접근을 위해 `re
558
558
 
559
559
  ## 개별 정책 비활성화
560
560
 
561
- 설정의 `enabledPolicies`에서 특정 정책을 제거하거나, 대시보드의 Policies 탭에서 해제하세요.
561
+ 설정 파일의 `enabledPolicies`에서 특정 정책을 제거하거나, 대시보드의 Policies 탭에서 해제합니다.
562
562
 
563
563
  ```json
564
564
  {