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