클로드 코드로 자동매매 스캐너를 고치다 보면 이런 화면을 하루에 수십 번 봅니다.
breakout.py 파일을 수정할까요?
1. 예
2. 예, 이 세션에서는 다시 묻지 않음
3. 아니요, 다른 방식을 알려주겠습니다
버전이나 환경에 따라 영어로 뜨기도 합니다. 문구는 조금씩 달라도 묻는 내용은 같습니다.
파일 하나 고칠 때마다, 명령어 하나 실행할 때마다 물어봅니다. 처음엔 안전해서 좋다고 생각했는데, 백테스팅 코드처럼 파일 여러 개를 연달아 손보는 작업에서는 제가 계속 엔터만 치고 앉아 있는 상황이 됩니다.
매번 승인만 누를 거면 확인 절차가 무슨 의미가 있나 싶어서 자동화 방법을 찾아봤습니다. 결론부터 말씀드리면 settings.json 파일 하나로 해결됩니다.
먼저 Shift+Tab을 눌러봤는데
검색해보면 세션 중에 Shift+Tab을 누르면 권한 모드가 바뀐다고 나옵니다. 그런데 제 환경에서는 아무 반응이 없었습니다.
몇 가지 원인이 있습니다.
- 터미널이 Shift+Tab을 자기 단축키로 가로채는 경우 (Windows Terminal 등)
- 원격 세션에서는 사용 가능한 모드가 제한되는 경우
- 모드를 바꿔도 세션이 끝나면 초기화되는 경우
세 번째가 특히 번거롭습니다. 매번 새로 눌러줘야 합니다. 그래서 설정 파일에 아예 박아두는 방식이 낫습니다.
권한 모드 종류

먼저 어떤 선택지가 있는지 알아야 합니다.
| 화면 표시 | 설정값 | 동작 |
|---|---|---|
| 수동 | default |
변경하기 전에 항상 확인 |
| 자동 | auto |
Claude가 위험도를 판단해 알아서 처리 |
| 편집 자동 수락 | acceptEdits |
파일 편집과 mkdir·touch·mv·cp 같은 기본 파일 명령은 자동 승인, 나머지는 확인 |
| 계획 | plan |
읽기만 하고 수정은 안 함. 설계 논의용 |
| (설정값으로만) | dontAsk |
미리 허용해둔 것 외에는 묻지 않고 자동 거부 |
| 권한 무시 | bypassPermissions |
전부 자동. 격리된 환경에서만 쓸 것 |
화면에서는 한글로 보이지만, 설정 파일에는 반드시 오른쪽의 영문값을 적어야 합니다. 한글 이름을 그대로 쓰면 인식되지 않습니다. 이게 처음에 제일 헷갈렸던 부분입니다.
참고로 자동(auto) 모드는 계정 등급에 따라 안 보일 수 있고, 프로젝트 폴더 설정에 적으면 무시되는 제약이 있습니다. 이 모드를 쓰려면 사용자 폴더 쪽 설정 파일에 적어야 합니다.
자동매매 코드를 다룬다면 acceptEdits가 현실적인 답입니다. 코드 수정과 폴더 만들기 같은 기본 파일 작업은 알아서 하되, 그 밖의 터미널 명령은 여전히 물어보기 때문입니다.
bypassPermissions는 이름부터 위험합니다. 실거래 API 키가 들어있는 폴더에서 쓸 만한 모드가 아닙니다.
설정 파일 만들기
파일을 두는 위치에 따라 적용 범위가 달라집니다.
| 경로 | 적용 범위 |
|---|---|
C:\Users\사용자명\.claude\settings.json |
모든 프로젝트 공통 |
C:\claude\내프로젝트\.claude\settings.json |
그 프로젝트에서만 |
가장 단순한 형태는 이렇습니다.
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
이것만 넣어도 파일 수정 확인창은 사라집니다. 저장하고 클로드 코드를 재시작하면 적용됩니다.
허용 목록과 금지 목록
여기서 한 발 더 나가면 특정 명령어만 골라서 자동 승인할 수 있습니다. 세 가지 목록이 있습니다.
allow— 묻지 않고 실행ask— 반드시 확인deny— 무조건 차단
중요한 규칙이 하나 있습니다. deny → ask → allow 순으로 검사해서, 먼저 걸리는 규칙이 이깁니다. 그래서 위험한 걸 deny에 넣어두면 나중에 allow 목록이 늘어나도 안전선이 유지되고, ask에 넣은 명령은 allow에 같이 들어 있어도 반드시 물어봅니다.
제가 자동매매 프로젝트에 쓰고 있는 설정입니다.
{
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(python backtest.py:*)",
"Bash(python screener.py:*)",
"Bash(python breakout.py:*)",
"Bash(python investor_scan.py:*)",
"Bash(git status)",
"Bash(git diff:*)"
],
"ask": [
"Bash(git push:*)"
],
"deny": [
"Bash(rm:*)",
"Read(**/.env)",
"Read(**/*key*)",
"Read(**/*token*)"
]
}
}
의미를 풀면 이렇습니다.
- 백테스팅과 각종 스캐너 실행, 변경 내역 확인은 묻지 않고 진행
- 원격 저장소에 올리는 건 반드시 확인
- 삭제 명령과 키·토큰이 들어간 파일 읽기는 무조건 차단
마지막 세 줄이 핵심입니다. 증권사 API 키나 접속 토큰이 담긴 파일은 읽는 것 자체를 막아두는 게 마음이 편합니다. 파일명을 정확히 몰라도 *key* 처럼 패턴으로 걸어두면 빠뜨릴 일이 없습니다.
여기서 **/를 빼먹으면 안 됩니다. Read(./*key*)처럼 ./를 붙이면 현재 폴더의 파일만 막혀서, config\api_key.json처럼 하위 폴더에 둔 키 파일은 그냥 읽힙니다. 막았다고 믿었는데 안 막힌 상태가 제일 위험합니다.
패턴 쓰는 법
규칙은 도구이름(내용) 형태로 씁니다.
"Bash" 전체 터미널 명령 허용 (권장하지 않음)
"Bash(python main.py)" 정확히 이 명령만
"Bash(python:*)" python으로 시작하는 모든 명령
"Read(./.env)" 현재 폴더의 이 파일만
"Read(**/.env)" 하위 폴더까지 모든 .env
"Write(src/**)" src 폴더 아래 쓰기
:*는 뒤에 뭐가 붙든 허용한다는 뜻입니다. 인자가 매번 달라지는 명령에 씁니다.
파일 만들 때 주의할 점
메모장으로 만들 때 두 가지를 조심해야 합니다.
첫째, 확장자. 저장할 때 파일 형식을 모든 파일로 바꾸지 않으면 settings.json.txt가 되어 인식되지 않습니다.
둘째, 쉼표. JSON은 마지막 항목 뒤에 쉼표가 있으면 파일 전체가 무시됩니다.
"allow": [
"Bash(git status)",
"Bash(git diff:*)", ← 이 쉼표 때문에 전체가 안 먹힘
]
설정이 적용 안 되는 것 같으면 대부분 이 둘 중 하나입니다.
대화 중에 바꾸는 방법
파일을 안 건드리고 세션 안에서 처리하려면 터미널에서 실행 중인 클로드 코드 창에 이렇게 입력합니다.
/permissions
현재 규칙을 보여주고 추가할 수 있는 메뉴가 뜹니다. 자주 쓰는 명령을 그때그때 허용 목록에 넣기 좋습니다.
다만 이렇게 추가한 건 세션 한정인 경우가 있어서, 계속 쓸 규칙이면 결국 파일에 적어두게 됩니다.
이건 터미널에서 쓸 때만 되는 방법입니다. 데스크톱 앱이나 웹처럼 대화창만 있는 환경에서는 이 패널이 열리지 않으니, 그쪽은 설정 파일로 해결해야 합니다.
어디까지 열어둘 것인가
자동매매 코드는 조금 특수합니다. 일반 웹 개발이면 실수해도 되돌리면 그만인데, 여기는 잘못된 코드가 그대로 주문으로 나갑니다.
그래서 저는 이 선을 지킵니다.
- 파일 편집은 자동 (되돌릴 수 있음)
- 백테스팅 실행은 자동 (실거래와 무관)
- 실주문 코드 실행은 항상 확인
- API 키 접근과 삭제 명령은 차단
bypassPermissions가 편하긴 합니다. 하지만 편의를 위해 안전장치를 통째로 끄는 건, 실거래 계좌가 연결된 폴더에서 할 일은 아니라고 봅니다.
승인 버튼을 계속 누르는 게 귀찮아서 시작한 일인데, 정리하고 나니 정말 위험한 순간에만 확인창이 뜨게 됐습니다. 확인창이 다시 의미를 갖게 된 셈입니다.
'AI 코딩 > 클로드 코드' 카테고리의 다른 글
| KIS API로 자동매매하다 막힌 것들 — 초당 호출 제한·실시간 시세·주문 (0) | 2026.08.20 |
|---|---|
| 한국투자증권 KIS API를 고른 이유 — HTS를 켜지 않아도 되는 자동매매 (0) | 2026.08.20 |
| 코딩 몰라도 됩니다 — 클로드 코드 설치와 첫 실행 (터미널 없이) (0) | 2026.08.19 |
| 클로드 코드가 멋대로 코드를 고칠 때 — CLAUDE.md 설정법 (1) | 2026.08.18 |