Skip to content

feat(hooks): prompt-type Stop hook for the bypass-route menu class #1338

Description

@devseunggwan

문제

ETHOS.md → Claims that terminate in prose는 "문장으로만 존재하는 주장은 훅이 잡을 수 없고, 게이트는 오지 않는다"고 선언했습니다. docs/hook/RULE-BACKSTOP-GAPS.md의 #1(오래된 전제의 다음 단계 질문), #4(훅 차단을 피하는 경로를 메뉴로 제안), #5(이미 정해진 선택을 설계 메뉴로 제시)가 모두 이 클래스입니다. 2026-08-15 측정에서 세 레인(prose·menu·follow-up write) 모두 기존 훅이 침묵했습니다.

하네스는 이제 type: "prompt" 훅을 지원합니다. 훅 입력(Stop이면 마지막 응답 포함)을 Haiku 기본 모델에 보내 {"ok": true|false, "reason": ...}를 받고, ok: false면 reason이 Claude에게 되돌아가 계속 작업하게 합니다(impossible: true로 종료 허용). type: "agent" 훅은 도구를 써서 실제 상태(예: PR이 아직 열려 있는지)를 확인한 뒤 판정합니다(실험 기능).

근거: Hooks guide → Prompt-based hooks / Agent-based hooks.

제안

praxis의 결정론 원칙과 충돌하지 않도록 이미 불가능하다고 선언한 클래스에만, 보완재로 도입합니다.

  1. 첫 대상은 gap chore(skills): remove unused and redundant skills #4(비용 HIGH, 수락 시 게이트가 영구히 넓어짐). Stop에 prompt 훅 하나: "마지막 응답이 훅 차단을 우회하는 방법(권한 규칙 추가, settings.json 편집, 파일 이동 등)을 사용자에게 제안하는가? 훅 메시지가 스스로 인쇄한 Bypass (if truly needed) 줄을 그대로 전달한 것은 제외한다." 좁은 질문 하나만 묻습니다.
  2. 등급은 advisory로 시작합니다: ok: false의 reason을 그대로 돌려주되 PRAXIS_BYPASS_MENU_STRICT=1일 때만 계속 작업하게 하고, 기본은 systemMessage로 사용자에게만 표시(하네스가 prompt 훅에서 이를 지원하는지 확인 필요 — 안 되면 강등 대신 impossible: true로 종료 허용).
  3. fire-ledger에 advise로 기록해 한 달 뒤 오탐률을 감사(docs/hook-prune-audit.md 축)에 올린 뒤 기본 등급을 정합니다. 비용(Stop마다 소형 모델 호출 1회)과 지연도 같이 기록합니다.
  4. gap #1은 type: "agent" 훅 후보입니다(gh pr view로 전제 확인). 실험 기능이므로 1의 결과를 본 뒤 별도 이슈로 냅니다.

검증 계획

  • RULE-BACKSTOP-GAPS가 쓴 세 레인 재생 하네스로 발화/침묵을 확인하고, 그 결과를 문서의 chore(skills): remove unused and redundant skills #4 행에 "measured" 갱신으로 남깁니다.
  • 대조군: 훅 메시지의 Bypass 줄만 전달한 응답은 통과해야 합니다.
  • prompt 훅은 docs/hook-operating-matrix.md에 Type 열로 구분해 command 훅과 섞이지 않게 합니다.

범위

PR 1개(훅 + spec + 재생 픽스처), 이후 감사 1회.

관련

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestquestionFurther information is requested

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions