🚀

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 찾은 후, joins vs includes 어느 쪽이 적합한지 판단

  • 연관된 다른 쿼리도 같이 검토

  • 테스트 영향 범위 고려

  • 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"를 설정해도 반영되지 않음. /model UI를 조작하면 값이 덮어써지는 알려진 버그 (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 실행

사용 방법

1

.zshrc에 `export CLAUDE_CODE_EFFORT_LEVEL=max` 추가

2

새 터미널을 열거나 `source ~/.zshrc` 실행해서 적용

3

우선순위: env var > CLI flag > settings.json > 모델 기본값. env var가 최우선

4

settings.json에는 max가 영속화 안 됨 (GitHub issue #30726). env var 필수

5

ultrathink보다 상위: ultrathink는 high(해당 턴만), env var max는 max(영구)

Tags

#effort-level #zshrc #env-var #ultrathink #max #performance

Source

커뮤니티 팁 (2026-03-16 공유)