콘텐츠로 이동
무료 가입
Claude Code

Claude Code 권한 및 hooks 설정

/permissions와 settings.json으로 allow, ask 및 deny rules를 구성한 다음 Claude Code hooks를 추가, 확인 및 문제 해결하세요.

바로 답변

Claude Code에서 /permissions를 실행하여 permission rules를 보고 관리하세요. rules를 persist하려면 allow, ask, deny를 settings.json에 넣으세요. Hooks는 같은 settings files를 사용하며 tool calls 전후로 formatting, tests 또는 safety checks를 실행합니다. permission precedence는 deny → ask → allow이므로 allow rule은 deny rule을 override할 수 없습니다.

이 settings는 computer의 local tools를 제어합니다. BetterToken은 model API Base URL, API Key 및 routing만 변경하며 local permissions를 bypass하거나 hooks를 대신 실행하지 않습니다.

permissions 또는 hooks 선택

요구 사항사용
prompt 없이 specific command 실행permissions.allow
operation 전에 매번 질문permissions.ask
sensitive file reads 또는 dangerous commands 차단permissions.deny
file change 후 format 또는 testPostToolUse hook
실행 전 action 확인 또는 차단PreToolUse hook
model에 team conventions 설명permission rule이 아닌 CLAUDE.md

올바른 scope 선택

FileScoperepository에 commit?
~/.claude/settings.jsoncurrent user의 모든 projects아니요
.claude/settings.jsoncurrent project 및 team예
.claude/settings.local.json이 machine의 current project아니요

최소 permission rules 구성

/permissions로 existing rules 검사

Claude Code에서 다음을 실행하세요.

/permissions

UI는 allow, ask, deny rules와 source files를 표시합니다. user 또는 project setting을 선택하기 전에 existing team 또는 managed rules를 확인하세요.

narrow rules 추가

이 project-level example은 일반 tests와 lint를 allow하고 매 git push 전에 ask하며 .env reads를 block합니다.

{
"permissions": {
"allow": [
"Bash(npm run lint *)",
"Bash(npm test *)"
],
"ask": [
"Bash(git push *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}

commands를 project에 있는 scripts로 바꾸세요. prompts를 제거하기 위해서만 bypassPermissions를 enable하지 마세요. 공식 documentation은 해당 mode를 isolated containers 또는 VMs로 제한합니다.

/permissions에서 확인

file을 저장하고 /permissions를 다시 실행하세요. 각 rule이 expected source 아래에 표시되는지 확인한 후 allow, ask, deny case를 각각 하나씩 trigger하여 behavior를 확인하세요.

복사 가능한 formatting hook 추가

이 example은 Claude Code가 Edit 또는 Write를 사용한 후 project formatter를 실행합니다.

{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "npm run format"
}
]
}
]
}
}

file에 이미 permissions가 있다면 hooks를 같은 top-level JSON object에 merge하세요. standalone .claude/hooks.json을 만들지 마세요. 먼저 npm run format을 수동 실행하여 성공하는지 확인하세요.

hook 확인

  1. Claude Code에서 /hooks를 실행하세요.
  2. PostToolUse를 열고 Edit|Write와 npm run format이 표시되는지 확인하세요.
  3. Claude에게 test file을 수정하게 하세요.
  4. hook output과 file format을 확인하고 hook이 errors 없이 한 번 실행되었는지 확인하세요.

Claude Code는 보통 settings changes를 자동으로 reload합니다. 그렇지 않다면 session을 종료하고 Claude Code를 다시 시작하세요.

일반적인 오류

증상원인해결 방법
Permission rules가 적용되지 않음~/.claude.json 또는 wrong directory에 있음~/.claude/settings.json, .claude/settings.json 또는 .claude/settings.local.json으로 이동
allowed action이 계속 blocked됨deny 또는 managed rule과 match됨/permissions에서 sources를 확인하세요. deny가 ask 및 allow보다 우선합니다.
hook이 실행되지 않음event 또는 matcher가 tool과 match하지 않음/hooks를 검사하세요. PreToolUse는 execution 전, PostToolUse는 success 후 실행되며 matchers는 case-sensitive입니다.
hook은 실행되지만 command가 실패함wrong script, working directory 또는 dependency먼저 project directory에서 같은 command를 수동으로 실행
BetterToken 연결 후에도 prompts가 남음API provider와 local permissions가 분리됨BetterToken Base URL을 유지하고 narrow Claude Code permissions를 별도로 구성
모든 hooks를 일시적으로 disable해야 함hook이 debugging을 방해할 수 있음"disableAllHooks": true를 추가한 후 debugging 뒤 제거하거나 false로 설정

BetterToken boundaries

BetterToken은 Claude Code model API access, model routing, balance 및 usage를 처리합니다. Claude Code는 다음을 계속 제어합니다.

  • file read 및 write access
  • Bash confirmation behavior
  • hooks의 실행 시점과 실행 scripts
  • sandbox, MCP 및 project rules

401, Base URL 또는 model mapping errors는 Claude Code 설정 가이드를 참조하세요. command prompts와 automation은 여기에서 permissions와 hooks를 문제 해결하세요.

관련 문서

참고 자료