grip
설명할 수 없는 코드를 푸시하지 못하게 하는 git 훅(hook).
CI
PyPI
Python
Docs
License: BSD-3-Clause
grip whiteboard: the change drawn as parts and arrows, with a question about a malicious client pinned to it
코드가 당신의 머신을 떠나기 전에, grip은 diff를 읽고 그 코드에 대해 질문합니다. 이 코드가 왜 이런 방식으로 작성되었는지, 어디서 실패할 수 있는지, 악성 호출자가 무엇을 할 수 있을지, 그리고 어떻게 작동하는지 알고 있는지 등을 묻습니다.
터미널에서든, 브라우저의 화이트보드 위에서든 말이죠. 모델이 당신의 답변을 100점 만점으로 평가합니다. 팀의 합격 점수보다 낮으면 푸시가 대기됩니다.
이는 코드가 아닌 개발자를 검사합니다. AI에게 작성하게 하되, 방어할 수만 있으면 됩니다.
"제가 '왜 Y 대신 X를 했나요?', '이 액터가 악성으로 행동하면 어떻게 되나요?'와 같은 질문을 한다고 가정했을 때 [...] 당신은 자신 있게 답변할 수 있어야 합니다."
Mitchell Hashimoto, 화이트보드 방어(whiteboard defense) 관련 발언
(grip과 무관)
30초 만에 사용해보기
훅 설치, 계정 생성, API 키가 필요 없습니다: fake 제공자는 오프라인으로 스크립트화된 질문을 합니다.
pipx install grip-hook
mkdir try-grip && cd try-grip && git init -q
echo 'def add(a, b): return a + b' > math.py && git add math.py
...
grip init으로 훅을 설치하기 전까지는 아무것도 차단되지 않습니다.
기능 (Features)
- diff에서 나온 다섯 가지 질문을 숨겨진 루브릭에 따라 100점 만점의 Grip Score로 평가합니다. 라인 번호나 사소한 정보는 절대 언급하지 않습니다.
grip whiteboard: 브라우저에서 부분과 화살표로 그려지는 변경 사항으로, 악성 행위자가 무엇을 할 수 있는지 포함하여 질문들이 고정됩니다. hook_mode = "whiteboard"를 설정하고 푸시할 때마다 이곳에서 방어합니다.
- 기존 환경과의 호환성: 모델로 Claude Code, Codex 또는 Gemini CLI를 재사용하거나 (API 키 불필요), Anthropic, 모든 OpenAI 호환 API, 또는 로컬 Ollama를 사용할 수 있습니다.
- 코딩 에이전트 내부 통합: Claude Code, Codex, Gemini CLI, Cursor 및 기타 도구에서
/grip을 사용하며, 사용자 승인이 있을 때까지 에이전트가 푸시하는 것을 막는 게이트 역할을 합니다.
- 필요할 때만 개입: 통과된 diff는 기억되며, 재시도는 질문을 재사용하여 평가 비용만 호출로 발생합니다.
grip skip은 하나의 푸시를 통과시키며, CI 및 비대화형 실행에서는 건너뜁니다.
설치 (Installation)
Linux, macOS 또는 Windows에서 Python 3.11 이상이 필요합니다. 이 명령어는 grip 명령과 git grip 별칭을 설치합니다.
빠른 시작 (Quick start)
grip blocking a push with lazy answers, then letting it through after real ones
cd your-repo
grip init
git push
grip init은 설치된 모델 중 Claude Code, Codex 또는 Gemini CLI를 선택합니다. 그렇지 않은 경우 ANTHROPIC_API_KEY를 설정하거나 Providers를 참조하십시오.
사용하게 될 다른 명령어들:
grip quiz
grip quiz --branch
grip whiteboard
...
walkthrough에서는 git commit부터 승인된 푸시까지의 실제 변경 과정을 안내합니다.
설정 (Configuration)
리포지토리 루트에 있는 .grip.toml 파일은 팀이 하나의 기준을 공유하도록 커밋해야 합니다:
passing_score = 70
difficulty = "normal"
provider = "claude-code"
모든 옵션, 환경 변수 및 pre-commit 프레임워크 훅은 설정 참조에 있습니다.
문서(Documentation)
guilyx.github.io/grip: 시작하기, 워크스루, 코딩 에이전트, 화이트보드, grip 내부 작동 방식, 그리고 점수가 무엇을 측정하고 무엇을 측정하지 않는지에 대한 솔직한 수치 정보.
기여(Contributing)
Issue와 pull request를 환영합니다. 개발 설정은 CONTRIBUTING.md를, 취약점 보고 및 grip이 전송하는 데이터에 대한 내용은 SECURITY.md를 참고하십시오. 이 프로젝트는 행동 강령(code of conduct)을 따릅니다.
인용(Citation)
grip이 연구나 과정의 일부인 경우, 반드시 인용해 주십시오. GitHub의 "이 리포지토리 인용하기" 버튼은 CITATION.cff를 읽습니다.
라이선스(License)
BSD-3-Clause. Copyright (c) 2026, Erwin L.