커스텀 정책 작성
- 대시보드
- CLI
- Admin → policy editor로 이동하여 New policy를 선택하고, 방지하려는 장애를 설명합니다.
- 정책 소스를 추가한 후 에디터에서 예상 일치 케이스와 안전한 비일치 케이스를 테스트합니다. 모든 유효성 검사 오류를 해결하세요.
- 초안을 저장하고 Publish version을 선택하여 변경 불가능한 버전을 생성합니다.
-
Admin → enforcement로 이동하여 observe 모드의 테스트 머신에 버전을 배포하고, 적용하기 전에 Observe → policy에서 결정 사항을 확인합니다.

좁은 범위의 규칙으로 시작하기
아래 정책은 명령어가 프로덕션을 대상으로 할 때만 파괴적인 Kubernetes 명령을 차단합니다. 해당 장애 패턴에 정확히 해당하지 않는 경우에는allow()를 반환합니다.
allow()를 반환하세요.
결정 방식 선택
복구해야 하는 에이전트를 위해 이유(reason)를 작성하세요. 무엇이 감지되었고 대신 무엇을 해야 하는지 설명하세요.
정책 객체
fn 내부에서 도구를 필터링하세요. match.toolNames은 공개 커스텀 정책 타입에 포함되지 않습니다.
정책 컨텍스트
모든 정책은PolicyContext를 받습니다.
모든 선택적 값을 실제로 선택 사항으로 취급하세요. 에이전트 버전과 이벤트 타입에 따라 제공되는 필드가 다를 수 있습니다.
일반적인 도구 입력
Failproof AI는 지원되는 하네스 전반에서 공통 도구를 정규화하므로, 정책은 일반적으로 하나의 입력 형태를 사용할 수 있습니다.
도구 입력 값은
unknown으로 타입이 지정되므로 방어적 변환을 사용하세요:
이벤트 선택
이벤트 가용성 및 차단 동작은 에이전트 하네스에 따라 다릅니다. 혼합 환경에서 이벤트에 의존하기 전에 에이전트 하네스를 확인하세요.
모든 정책 이벤트 이름
모든 정책 이벤트 이름
SessionStart, SessionEnd, UserPromptSubmit, PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, Notification, SubagentStart, SubagentStop, TaskCreated, TaskCompleted, Stop, StopFailure, TeammateIdle, InstructionsLoaded, ConfigChange, CwdChanged, FileChanged, WorktreeCreate, WorktreeRemove, PreCompact, PostCompact, Elicitation, ElicitationResult, UserPromptExpansion, PostToolBatch, Setup.일반적인 정책 패턴 작성
보호된 경로에 대한 쓰기 차단
비차단 지침 제공
세션 완료 게이팅
정책 파일 로드
컨벤션 파일
컨벤션 파일은 자동으로 로드됩니다:- 프로젝트 및 사용자 정책 디렉토리가 모두 로드됩니다.
- 각 디렉토리 내에서 파일은 알파벳 순서로 로드됩니다.
- 파일은 반드시
policies.js,policies.mjs, 또는policies.ts로 끝나야 합니다. - 하나의 파일에서
customPolicies.add()를 여러 번 호출할 수 있습니다. - 로컬 모듈에서의 상대 임포트를 지원합니다.
- 프로젝트 정책은 커밋할 수 있어 동일한 규칙이 레포지토리를 따라갑니다.
명시적 파일
유효성 검사나 설정에서 엔트리 파일을 직접 지정해야 할 때는 명시적 경로를 사용하세요:유효성 검사 및 테스트
유효성 검사는 프로덕션 로더를 통해 모듈을 실행하고 최소 하나의 정책이 등록되었는지 확인합니다.- 반드시 일치해야 하며 의도한 정책 이유를 생성하는 작업 하나.
- 유사하지만 안전한 작업으로
allow()를 반환해야 하는 케이스 하나. - 누락되거나 잘못된 형식의 도구 필드.
- 대체 명령어 구문, 경로, 인용 방식, 대소문자, 공백.
- 사용 불가능한 서브프로세스 또는 네트워크 의존성.
런타임 동작
- 기본 제공 정책이 커스텀 정책보다 먼저 평가됩니다.
- 첫 번째
deny가 발생하면 이후 정책 평가가 중단됩니다. - 어떤 정책도 이벤트를 거부하지 않을 경우, 여러
instruct결과가 결합될 수 있습니다. - 정책 함수의 실행 제한 시간은 10초입니다.
- 예외가 발생하거나 타임아웃이 발생하면 로그에 기록되고
allow()로 처리됩니다. - 로드에 실패한 컨벤션 파일은 건너뜁니다. 다른 커스텀 파일과 기본 제공 정책은 계속 실행됩니다.
- 최상위 모듈 로드에도 10초 제한 시간이 적용됩니다.
- Cloud observe 모드에서는 정책을 실행하지만, allow가 아닌 결정은 기록만 하고 적용하지 않습니다.
fn 내부의 작업을 제한하고, 의존성 실패를 캐치하며, 해당 실패가 작업을 허용할지 거부할지 신중하게 결정하세요.
API 익스포트
TypeScript는
PolicyContext, PolicyResult, CustomHook, PolicyDecision, PolicyFunction을 익스포트합니다.
커스텀 정책 배포
버전을 게시하고, observe 모드로 배포하고, 결정 사항을 확인한 후 적용 단계로 이동합니다.

