본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 29. 18:07

Claude Code가 Fable 5에서 Opus로 전환하는 이유와 오탐을 방지하는 워크스페이스 위생

요약

Claude Code 사용 시 Fable 5 안전 분류기에 의한 오탐 문제를 방지하기 위한 워크스페이스 위생 관리법을 다룹니다. 또한 settings.json 설정 오류로 인해 모델 선택이 무시되는 현상과 해결 방법을 설명합니다.

핵심 포인트

  • Fable 5 안전 분류기는 CLAUDE.md 등 워크스페이스 컨텍스트를 모두 검사함
  • 엔지니어링 용어가 보안/생물학 관련 오탐을 유발할 수 있음
  • 워크스페이스 위생을 위해 중립적인 문서 관리 필요
  • settings.json의 모델 값이 손상되면 기본 모델로 폴백될 수 있음

Behavior described as of June 2026 — Anthropic tunes these classifiers, so details may change. Sources at the end.

간단 요약: Claude Fable 5는 안전 분류기(주로 offensive-cybersecurity 및 biology)를 실행합니다. 요청 중 하나가 플래그 지정되면, Claude Code는 Opus에서 이를 재실행하고 세션은 Opus에 유지됩니다. 이 분류기는 **모델이 읽는 모든 것 — 자동 로드된 CLAUDE.md를 포함하여 —**을 읽기 때문에, 사용자가 아무것도 입력하기 전에 세션이 _첫 번째 메시지_로 폴백할 수 있습니다. 합법적인 작업을 위해서는 가장 지속 가능한 해결책은 **워크스페이스 위생(workspace hygiene)**입니다: 자동 로드되는 문서는 중립적이고 아키텍처에만 초점을 맞추고, 메커니즘 중심의 도메인 텍스트는 자동 로드되지 않는 파일로 이동해야 합니다.

이것이 무엇이며, 무엇이 아닌가. 이것은 합법적인 작업을 위한 _오탐(false positives)_을 제거하는 것에 관한 것입니다. 저희도 스스로 경험했습니다: 저희 프로젝트 문서에는 평범한 글쓰기 습관(

Anthropic의 도움말 문서와 Claude Code 문서를 참고하면 다음과 같습니다:

  • Fable 5는 몇 가지 범주에 대한 자동 안전 검사를 제공합니다. 공격적인 사이버 보안과 생물학/생명 과학이 대부분의 개발자에게 중요한 두 분야입니다.
  • 이 검사는 **"최신 메시지뿐만 아니라 메모리, 커넥터 콘텐츠, 웹 검색 결과 및 파일을 포함하여 모델이 읽는 모든 것"**을 검토합니다.
  • 문서에는 다음과 같이 직접 명시되어 있습니다: "폴백(Fallback)은 세션의 첫 번째 요청에서 발생할 수 있습니다... 왜냐하면 첫 번째 요청에 CLAUDE.md 콘텐츠와 git 상태와 같은 워크스페이스 컨텍스트가 담겨 있기 때문입니다."
  • 이 검사들은 (Anthropic의 표현으로는) "의도적으로 광범위합니다" — 이것이 합법적인 작업에서 오탐(false positives)이 발생하는 이유입니다.

대부분의 팀이 놓치는 부분: 트리거는 종종 사용자가 _무엇을 하는지_가 아니라, 작성된 문서들이 _어떻게 이야기하는지_에 달려 있습니다. 엔지니어링 글쓰기는 전투 은유(attack, kill, hit the target, defend the perimeter) — 공격하고, 죽이고, 목표를 타격하며, 경계를 방어하는 방식 — 와 보안/생물학에서 가져온 메커니즘 약어(

settings.json의 함정: 세션이 잘못된 모델로 조용히 시작되는 문제

관련이 있지만 다른 유형의 실패 사례가 있습니다. Fable을 저장했음에도 불구하고 Claude Code가 계속해서 사용자의 티어(tier) 기본 모델(Opus/Sonnet)로 시작되는 현상입니다. v2.1.153 버전부터는 /model 명령어가 사용자의 선택을 ~/.claude/settings.json 파일의 model 필드에 기록합니다. 따라서 실제로 어떤 값이 기록되었는지 확인해 보세요:

python -c "import json,pathlib;print(repr(json.load(open(pathlib.Path.home()/'.claude'/'settings.json'))['model']))"

만약 값이 깔끔한 ID/별칭(alias)이 아니라면 — 즉, 길을 잃은 터미널 이스케이프 문자(terminal-escape characters)가 포함되어 있거나, 해당 기능을 지원하지 않는 ID에 접미사(suffix)가 붙어 있다면 (예: opus/sonnet에 대해 문서화된 [1m] 1M-컨텍스트 접미사) — Claude Code가 이를 인식하지 못하고 조용히 기본 모델로 넘어갈(fall through) 수 있습니다. 저희는 정확히 이러한 형태의 손상된 값을 마주했습니다. 해결 방법은 수동으로 한 줄만 수정하면 됩니다:

{ "model": "claude-fable-5" }

그 후 다음 세션이 시작될 때 /status 명령어를 통해 활성화된 모델을 확인하여 검증하십시오.

예방: 워크스페이스 위생 (workspace hygiene)

저희의 오탐(false positives)을 제거한 네 가지 실천 방안을 영향력이 큰 순서대로 나열합니다:

  1. 자동 로드되는 문서는 아키텍처 전용으로 유지하세요. CLAUDE.md에는 파일 레이아웃, 이름, 명령(commands), 상태(status)를 담아야 하며, 도메인 메커니즘(domain mechanism)을 담아서는 안 됩니다. 만약 프로젝트가 민감하게 들릴 수 있는 도메인(건강 데이터, 방어 보안, 실험실 관련 도구 등)을 정당하게 다루고 있다면, *메커니즘 서사(mechanism narrative)*를 자동 로드되지 않는 별도의 문서(예: DOMAIN.md)로 옮기고 이름으로 참조하세요.
  2. 메커니즘 언어보다 결과 언어를 사용하세요. 민감한 부분이 어떻게 작동하는지가 아니라, 시스템이 무엇을 생성하는지를 말하세요. 정직한 콘텐츠 자체는 변하지 않으며, 프레이밍(framing)이 결과물을 명명할 뿐입니다.
  3. 전투적 은유보다 중립적인 동사를 사용하세요. 문제에 접근하고(approach), 프로세스를 중단하며(stop), 대상에게 도달하세요(reach). 이는 사람들에게도 더 잘 읽힙니다. 은유는 결코 핵심적인 역할을 수행하는 것이 아니었습니다.
  4. 문제가 발생하기 전에 검사기를 실행하세요. 저희가 자체 워크스페이스(workspace)에서 사용하던 스크립트를 의존성이 없는 작은 검사기(checker)로 일반화했습니다. 이 검사기는 CLAUDE.md 파일에서 플래그(flag)를 유발하기 쉬운 상용구(코드 범위 보호, 파일 이름, 식별자 등)를 스캔하고, settings.json의 모델 ID를 무결성 검사(sanity-check)하며, 제안 사항을 출력합니다. 이 도구는 파일을 절대 수정하지 않습니다:
curl -O https://tagmac.dev/tools/claudemd-hygiene-check.py
python claudemd-hygiene-check.py

Python 3 표준 라이브러리(stdlib)만 사용하며, 발견 사항이 있을 경우 종료 코드(exit code) 1을 반환합니다 (CI 또는 pre-commit hook에 삽입 가능).

출처

원문은 tagmac.dev에 게시되었습니다. 저희는 이곳에서 수행하는 모든 실습을 저희의 자체 운영 환경에 먼저 적용합니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0