기술 연재 · Claude Code 실전 3/5

Claude Code 권한 창 줄이기, 내장 스킬 /fewer-permission-prompts

grep 한 번에도 묻는 권한 창을 줄이는 Claude Code 내장 스킬. 대화 기록에서 자주 쓴 읽기 전용 명령을 찾아 프로젝트 허용 목록에 넣는 방식, 내 기록을 세어 본 결과, 팀과 같이 쓰는 법을 정리했습니다.

Claude Code가 grep이나 cat을 돌릴 때마다 허락을 묻는다면, 내장 스킬 /fewer-permission-prompts가 그 횟수를 줄여 줍니다. 명령 목록의 설명은 이렇습니다: 대화 기록에서 자주 쓴 읽기 전용 Bash·MCP 도구 호출을 찾아, 우선순위를 매긴 허용 목록을 프로젝트 .claude/settings.json에 넣는다.

얼마나 자주 쓰나

이 맥의 Claude Code 기록(~/.claude/projects/*/*.jsonl) 190개에서 Bash 도구 호출의 첫 명령을 세어 봤습니다. 경로와 인자는 빼고 명령 이름만 셉니다.

$ python3 count_bash.py ~/.claude/projects
sessions      190
bash calls 48,355

grep        7,433
cat         2,639
ls          1,360
git status    346
rm            232

Bash 호출 약 4만 8천 번 가운데 grep만 7천 번이 넘습니다. 이런 명령마다 허락을 눌러야 한다면 시간이 꽤 샙니다. 셀 때 쓴 스크립트는 아래에 있습니다.

# count_bash.py: Bash 도구 호출의 첫 명령만 센다(경로·인자는 출력하지 않음)
import json, glob, collections, sys, os
root = os.path.expanduser(sys.argv[1] if len(sys.argv) > 1 else '~/.claude/projects')
c = collections.Counter(); n = 0; files = glob.glob(f'{root}/*/*.jsonl')
for f in files:
    for line in open(f, errors='ignore'):
        if '"Bash"' not in line: continue
        try: d = json.loads(line)
        except Exception: continue
        content = (d.get('message') or {}).get('content')
        for b in content if isinstance(content, list) else []:
            if not (isinstance(b, dict) and b.get('type') == 'tool_use' and b.get('name') == 'Bash'): continue
            cmd = (b.get('input') or {}).get('command', '').strip()
            toks = cmd.split('&&')[0].split('|')[0].split()
            if toks and toks[0] == 'cd' and '&&' in cmd: toks = cmd.split('&&', 1)[1].split()
            if not toks: continue
            k = toks[0] + (' ' + toks[1] if toks[0] == 'git' and len(toks) > 1 else '')
            c[k] += 1; n += 1
print(f'sessions {len(files):>8}'); print(f'bash calls {n:>6,}'); print()
for k in ('grep', 'cat', 'ls', 'git status', 'rm'): print(f'{k:<11}{c[k]:>6,}')

위험한 명령은 그대로 묻는다

이 스킬이 찾는 건 읽기 전용 호출입니다. 파일을 지우는 rm은 이 맥에서 232번 돌았지만 대상이 아닙니다. 읽기만 하는 명령은 허락 없이 돌고, 파일을 바꾸거나 지우는 명령은 지금처럼 확인을 받습니다. 스킬이 넣은 목록은 설정 파일에 그대로 남으니, 돌린 뒤 permissions.allow에 무엇이 들어갔는지 한 번 읽어 보세요.

팀과 같이 쓰기

결과는 프로젝트 폴더의 .claude/settings.json에 들어갑니다. 이 파일을 커밋하면 같은 저장소를 쓰는 팀원도 같은 허용 목록을 씁니다. 나만 쓰고 싶은 규칙은 .claude/settings.local.json에 두면 됩니다.

쓰는 법

자주 여는 프로젝트에서 Claude Code를 열고 한 번 입력합니다.

/fewer-permission-prompts

참고

김현빈 Developer & Writer

기술, 포스팅 관련 질문, 프로젝트 협업 등 연락주시면 언제든지 회신 드립니다.

esc

↑↓ 고르기↵ 열기? 단축키

해변에서 주운 것

읽으러 가기 →
guest@beachcombers — zsh

단축키

⌘K 또는 /
글·작업·개발일지 찾기
R
해변 산책 — 아무 글 하나 줍기
`
터미널 열기
←→
쪽 넘기기 (휠·스와이프도 됩니다)
?
이 안내
esc
닫기