Effort Level을 Max로 영구 설정하기
Claude Code환경변수로 max를 강제 적용 — settings.json 버그 우회
Effort Level이 뭔가
Claude가 하나의 응답을 생성할 때 얼마나 깊이 생각할지(내부 추론에 쓰는 토큰 양)를 조절하는 다이얼입니다. 사용자가 보는 최종 답변의 길이와는 별개로, 응답 전에 모델 내부에서 돌리는 "생각 과정"의 깊이가 달라집니다.
간단히 말하면:
낮은 effort = 빠르게, 적은 토큰으로, 직관적으로 답변
높은 effort = 천천히, 많은 토큰을 써서, 여러 경우를 따져보고 답변
모델 자체(Opus 4.6, Sonnet 등)는 같아도, effort level에 따라 같은 질문에 대한 답변 품질이 확연히 달라집니다. 간단한 질문이면 low로도 충분하지만, 복잡한 디버깅·아키텍처 설계에서는 high/max가 더 정확한 답을 냅니다.
Low / Medium / High / Max — 실질적 차이
| 레벨 | 내부 추론 토큰 | 응답 속도 | 비용 | 적합한 작업 |
|---|---|---|---|---|
| Low | 최소 | 가장 빠름 | 가장 저렴 | 파일 확인, 단순 질문, 명령어 찾기 |
| Medium | 중간 | 중간 | 중간 | 일반적 코딩, 작은 리팩터링, 테스트 작성 |
| High | 많음 | 느림 | 비쌈 | 복잡한 버그 추적, 다중 파일 리팩터링, 설계 검토 |
| Max | 최대 | 가장 느림 | 가장 비쌈 | 어려운 아키텍처 결정, 엣지 케이스 많은 코드, "한 번에 잘 해야 하는" 작업 |
High vs Medium — 실제로 어떤 차이가 예상되나
같은 "N+1 쿼리 최적화" 요청을 예로 들면:
Medium:
눈에 보이는 N+1을 찾아서
includes(:association)한 줄 추가기본적인 해결, 보통 맞음
10~20초 응답
High:
N+1 찾은 후,
joinsvsincludes어느 쪽이 적합한지 판단연관된 다른 쿼리도 같이 검토
테스트 영향 범위 고려
30~60초 응답, 답변이 더 정교함
차이가 드러나는 지점:
엣지 케이스 감지: medium은 놓치는 걸 high가 잡아냄 (nil 처리, 동시성 이슈 등)
여러 해결책 비교: medium은 첫 떠오른 답, high는 대안을 비교한 후 추천
기존 코드 스타일 준수: medium은 일반적 패턴, high는 프로젝트 패턴 더 잘 따라감
긴 체인 추론: "A가 B면 C이고, 그러면 D..." 같은 여러 단계 논리에서 high가 훨씬 정확
차이가 크지 않은 지점:
파일 한두 개만 보는 단순 작업
"이 에러 메시지 뭐냐" 같은 사실 질문
잘 알려진 API 사용법 질문
본론: 왜 Max로 영구 설정하는가
Claude Code v2.1.68(2026-03-04 릴리즈)부터 기본 effort level이 기존 high에서 medium으로 낮아졌습니다. 공식 체인지로그 변경이지만, 사용자 입장에서는 답변 품질이 낮아진 것처럼 느껴질 수 있습니다.
항상 max로 동작시키고 싶다면 .zshrc에 환경변수를 추가하는 게 가장 간단합니다.
Effort level 설정 우선순위
1. 환경변수: CLAUDE_CODE_EFFORT_LEVEL (최우선)
2. CLI 플래그: claude --effort max
3. settings.json: "effortLevel": "high"
4. 모델 기본값 (Opus 4.6은 medium)
위에 있을수록 우선 적용됩니다. 환경변수가 1순위이므로 한 번 설정하면 다른 설정을 덮어씁니다.
추가 방법
.zshrc에 다음을 추가:
# Claude Code: 기본 effort level을 max로 설정
# settings.json으로는 max가 영속화 안 되는 버그 때문에 env var로 설정
export CLAUDE_CODE_EFFORT_LEVEL=max
새 터미널 세션부터 자동 적용됩니다.
왜 settings.json이 아니라 환경변수인가
settings.json:
"effortLevel": "max"를 설정해도 반영되지 않음./modelUI를 조작하면 값이 덮어써지는 알려진 버그 (GitHub issue #30726).high까지는 저장되지만max는 저장 안 됨CLI 플래그:
claude --effort max는 동작하지만 매번 타이핑 필요. alias를 만들 수도 있지만 환경변수가 더 단순환경변수: 모든 세션에 자동 적용되고, 우선순위도 최상위
ultrathink 키워드와의 차이
Claude Code에는 ultrathink라는 키워드가 있어서, 프롬프트에 포함하면 그 턴만 high effort로 올라갑니다.
| 설정 방식 | effort level | 지속성 |
|---|---|---|
ultrathink 키워드 |
high | 해당 턴만 |
/effort high |
high | 세션 중 |
/effort max |
max | 세션 중 |
CLAUDE_CODE_EFFORT_LEVEL=max (env var) |
max | 영구 |
결론: env var로 max를 설정하면 ultrathink보다 상위 수준이 항상 적용됩니다. 매번 "깊게 생각해줘"라고 부를 필요가 없어집니다.
주의사항
max는 토큰 사용량과 응답 시간이 가장 높아집니다. 간단한 작업에는 오버스펙필요에 따라 임시로 낮추려면 세션에서
/effort low또는/effort medium실행환경변수를 적용하려면 새 터미널을 열거나
source ~/.zshrc실행
사용 방법
.zshrc에 `export CLAUDE_CODE_EFFORT_LEVEL=max` 추가
새 터미널을 열거나 `source ~/.zshrc` 실행해서 적용
우선순위: env var > CLI flag > settings.json > 모델 기본값. env var가 최우선
settings.json에는 max가 영속화 안 됨 (GitHub issue #30726). env var 필수
ultrathink보다 상위: ultrathink는 high(해당 턴만), env var max는 max(영구)
Tags
Source
커뮤니티 팁 (2026-03-16 공유)