본문 바로가기
UX 개발/개발도구와 환경

Claude Code 'ls, cd, find 등' 기본 커맨드 확인 더 안 묻게 하기

반응형

목표
ls, cd, find 같은 무해한 읽기 전용 셸 명령은 더 이상 “실행할까요?” 프롬프트 없이 바로 동작하게 하고, 나머지 위험한 작업(쓰기·삭제 등)은 그대로 유지한다.


1. ~/.claude/CLAUDE.md글로벌 프롬프트 정의하기

Claude는 세션이 시작될 때마다 찾을 수 있는 모든 CLAUDE.md 파일을 시스템 프롬프트에 주입한다.
가장 상위(홈 디렉터리)에 두면 모든 프로젝트와 터미널 세션에 적용된다.

# 예시: ~/.claude/CLAUDE.md
# Bash behaviour
- ALWAYS run ls, cd, find, pwd without asking.
- NEVER write to disk unless explicitly instructed.
# Workflow
- Prefer single-file edits; avoid project-wide refactors unless asked.

중요 – 모델이 “기억”하는 게 아니라 매 세션마다 이 파일을 시스템 프롬프트로 삽입한다.


2. 허용 도구 목록에 명령 추가하기

프롬프트만으로는 권한 체크가 사라지지 않는다. Claude가 묻는 이유는 툴이 화이트리스트에 없기 때문이다.
허용 범위별 4가지 방법이 있다.

방법 적용 범위 사용법
프롬프트에서 “항상 허용” 클릭 현재 세션 GUI
/permissions add Bash(ls:\*) Bash(cd:\*) Bash(find:\*) 현재 세션 명령어
.claude/settings.json 편집 해당 프로젝트 "allowedTools": [...]
~/.claude.json 편집 전체 시스템 "allowedTools": [...]

전역 예시 (~/.claude.json)

{
  "allowedTools": [
    "Bash(ls:*)",
    "Bash(cd:*)",
    "Bash(find:*)"
  ]
}

3. 가장 쉬운 비추천 옵션 — --dangerously-skip-permissions

claude --dangerously-skip-permissions

모든 권한 확인을 무시한다. Anthropic은 격리된 컨테이너 외에서는 사용하지 말라고 경고한다. 실수로 파일 삭제·네트워크 유출 등이 발생할 수 있다.


실전 레시피

1단계 — 한 번만 설정

# 허용 목록
mkdir -p ~/.claude
echo '{ "allowedTools": ["Bash(ls:*)","Bash(cd:*)","Bash(find:*)"] }' > ~/.claude.json

# 글로벌 프롬프트
cat > ~/.claude/CLAUDE.md <<'EOF'
# Bash behaviour
- ALWAYS run ls, cd, find without asking.
EOF

2단계 — 매일 사용

cd /my/project
claude        # 이제 ls·cd·find는 묵묵히 실행, 다른 명령은 여전히 보호

필요하면 두 파일을 수정하거나 삭제하면 즉시 원래대로 돌아간다(세션 재시작 필요).


주의할 점

  • 쓰기/삭제 계열은 별도 허용 설정을 하지 않는 이상 계속 확인 창이 뜬다.
  • CLAUDE.md~/.claude.json을 수정한 뒤엔 새 세션을 열어야 반영된다.
  • 전역 설정은 강력한 만큼 위험도 크다. 프로젝트별 설정(.claude/settings.json)로 제한하는 편이 안전할 수 있다.

아래는 “읽기 전용·무해(or 쉽게 되돌릴 수 있음)” 기준으로 다시 추려 정리한 화이트리스트 최종본입니다.
cd 를 포함했고, 실전에서 자주 쓰이지만 위험 요소가 거의 없는 명령만 남겼습니다.


refined ~/.claude.json

{
  "allowedTools": [
    // 디렉터리 이동·탐색
    "Bash(cd:*)",            // 경로 탐색
    "Bash(pwd)",
    "Bash(ls:*)",
    "Bash(tree:*)",

    // 파일 내용·미리보기
    "Bash(cat:*)",
    "Bash(head:*)",
    "Bash(tail:*)",

    // 검색·패턴 매칭
    "Bash(grep:*)",
    "Bash(rg:*)",
    "Bash(find:*)",

    // 집계·통계
    "Bash(wc:*)",
    "Bash(sort:*)",
    "Bash(uniq:*)",
    "Bash(du -sh:*)",
    "Bash(df -h)",

    // 시스템 정보
    "Bash(uname -a)",
    "Bash(lscpu)",
    "Bash(uptime)",

    // Git  (읽기 전용)
    "Bash(git status:*)",
    "Bash(git diff --stat:*)",
    "Bash(git log --oneline:*)",

    // 테스트·빌드 드라이런
    "Bash(npm run lint)",
    "Bash(npm run test:*)",
    "Bash(make -n:*)",

    // CLI 통합 (읽기 전용 호출)
    "Bash(gh issue view:*)",
    "Bash(docker ps)"
  ]
}

메모

카테고리 포함 이유
cd 프로젝트 루트·서브디렉터리 전환 시 반복 확인 방지. 실수해도 cd - 로 복구 가능, 쓰기·삭제 없음.
검색/집계 코드·로그 탐색과 간단한 통계 파악은 “읽기” 범주.
Git 읽기 코드를 건드리지 않고 diff·log 정보만 확인.
테스트 드라이런 npm run lint, make -n 등은 실제 빌드/변경 없이 구조만 점검.
시스템 정보 컨테이너/VM 사양 파악용.

제외한 것

  • rm, mv, cp, chmod, curl, wget, docker run 등은 여전히 묻도록 유지.
  • sed -i, awk -i inplace 등 “쓰기” 가능성이 있는 변형 플래그도 제외.
  • 네트워크 접근·패키지 설치 계열(apt, pip install)은 프로젝트마다 정책이 달라 위험.

적용 & 운영 팁

  1. 파일 생성·세션 재시작
    ~/.claude.json 저장 후 새 claude 세션을 열어야 반영됨.
  2. 프로젝트 전용 범위
    리포마다 다르게 관리하고 싶으면 .claude/settings.json 에 동일 형식으로 작성.
  3. 임시 실험
    세션 중 /permissions add Bash(stat:*) 로 시험해 본 뒤 유용하면 화이트리스트에 편입.
  4. 토큰 관리
    cat 으로 거대 파일 전체 출력은 토큰 폭증 → 보통 head, tail, grep -n 으로 범위 좁힘.
  5. 롤백
    규칙 삭제 후 세션 재시작하면 즉시 원래 권한 확인 단계로 돌아간다.

이 정도만 추가해 두면 탐색·검색·상태 점검 루프가 더 이상 권한 프롬프트에 끊기지 않고,
위험 작업(쓰기·삭제·네트워크·퍼미션 변경)은 그대로 보호막을 유지할 수 있다.


결론

  1. ~/.claude/CLAUDE.md에 상시 지시문 작성.
  2. ~/.claude.json 또는 /permissions읽기 전용 명령을 화이트리스트에 추가.
  3. 필요 시 프로젝트별 설정으로 범위 축소.
  4. 극단적으로 번거로우면 --dangerously-skip-permissions, 하지만 추천하지 않는다.

이렇게 하면 ls, cd, find는 더 이상 귀찮게 묻지 않으면서도, 삭제·쓰기 같은 위험 작업은 그대로 확인 절차를 거치게 된다.

반응형
❤️ 외주/과외 문의
🖥️ 클라우드 메뉴판 : 디지털팝