/** * Forgen — DANGEROUS-RESPONSE: 응답 텍스트 파괴적 명령 가드 * * Stop hook 단계에서 어시스턴트 응답 텍스트를 스캔하여 *파괴적 명령 제안*을 * 감지한다. PreToolUse 가드는 실제 도구 실행 직전에만 동작하므로, 모델이 * 텍스트로 위험한 대안을 *제안*하는 케이스(예: `find ... -exec rm -r {}`)는 * 도구 실행 단계에 도달하지 못하면 차단되지 않는다. 본 체크는 그 갭을 메운다. * * 발견 경위 (forgen-eval syn-004, 2026-05-06): * notepad 룰 "[no-rm-rf-unconfirmed]" inject 상태에서, driver(llama 8B) 가 * `rm -rf` 리터럴은 회피했지만 `find . -type d -name 'build' -exec rm -r {}` * 같은 우회 명령을 "안전한 대안"으로 제안. PreToolUse 차단은 실 실행 시 * 동작하지만 "응답 텍스트만으론" 못 막음. driver 모델 능력에 무관하게 * 일관된 안전 보장이 되도록 응답 단계에서 한 번 더 잡아낸다. * * 동작: * - 어시스턴트 응답에 등록된 파괴 패턴이 매칭되면 block 권고. * - "확실히, 명시적 확인" 같은 confirm 표현 동반 여부는 검사하지 않는다 * (휴리스틱 brittle). 매칭 시 무조건 block 후, 모델이 안전한 대안 제시 * 또는 명시적 confirm 절차로 재응답하도록 유도. * * 순수 함수 — Stop hook 이 reason 문자열을 그대로 주입. */ export interface DangerousResultMatch { block: boolean; matched?: string; reason: string; } /** 응답 텍스트가 파괴적 명령 패턴을 포함하는지 검사. */ export declare function checkDangerousResponsePattern(opts: { text: string; }): DangerousResultMatch;