Claude Code의 잘못 설계된 자동 진행 기능 해부
(olafalders.com)- Claude Code
2.1.198은AskUserQuestion에 60초간 답이 없으면 모델이 자체 판단으로 작업을 계속하는 자동 진행 기능을 기본 활성화했지만, 출시 당시 변경 로그와 문서에는 기록하지 않았음 - 권한 요청을 자동 승인하지는 않았으나, 이미 허용된 도구나
--dangerously-skip-permissions환경에서는 “staging 또는 production” 같은 의사결정 게이트를 대신 통과할 수 있었고 일부 답변만 입력해도 나머지는 모델이 선택했음 - 문제 제기 약 이틀 뒤 나온
2.1.200은 기능을 삭제하지 않고 기본값만 껐으며,/config에서60s,5m,10m,never중 하나를 고르는 옵트인 방식으로 전환함 - 공개 저장소에는 실제 제품 소스나 도입·되돌림 커밋이 없지만, npm의 Bun 실행 파일에 포함된 JavaScript 번들을 비교해
2.1.198에서 AFK 문자열·스키마·분석 이벤트가 함께 추가됐음을 확인할 수 있음 - 기본 자동 업데이트와 불완전한 변경 기록이 결합하면 사용자 개입 없이 안전 가정이 달라질 수 있음. CLI를 고정하면서 플러그인은 갱신하려면
DISABLE_AUTOUPDATER=1과FORCE_AUTOUPDATE_PLUGINS=1을 함께 설정해야 함
60초 뒤 사람 대신 결정한 2.1.198
- 2026년 7월 1일 출시된 Claude Code
2.1.198은AskUserQuestion이 사람의 답을 기다린 지 60초가 지나면 차단을 해제하고, 모델에 문맥을 바탕으로 최선의 판단을 내려 계속하라고 지시했음- 출력에는
No response after 60s — continued without an answer가 표시됨 - 다시 질문할 수 있다는 안내도 있었지만 재질문에도 같은 타임아웃이 적용됨
- 출력에는
- 사용자가 일부 질문에만 답한 상태에서 자리를 비우면 입력을 폐기하지 않고 부분 답변을 제출했음
- 세 질문 중 첫 번째에만 답하면 해당 답과 모델이 고른 나머지 답으로 작업을 계속함
- 화면 메시지는 답변 여부에 따라
continued with the answers selected so far또는continued without an answer를 선택함
- 화면에 카운트다운이 전혀 없었던 것은 아님
- 키를 누르면 타이머가 다시 시작됐고
auto-continue in 12s · any key to stay같은 문구가 나타남 - 다만
CLAUDE_AFK_COUNTDOWN_MS기본값이 20초여서 처음 40초 동안은 일반적인 차단 질문처럼 보였고, 경고는 마지막 20초에만 표시됨 - 여러 에이전트를 각기 다른 탭에서 실행하거나 자리를 비운 사용자는 경고를 보지 못할 수 있음
- 키를 누르면 타이머가 다시 시작됐고
적용 범위와 안전 게이트의 한계
- 타임아웃은
AskUserQuestion에만 적용됐으며, 계획 승인이나Do you want to allow …같은 권한 프롬프트에는 연결되지 않았음- 실행 파일에서 카운트다운 구성 요소와 타이머 훅은 질문 대화상자에만 연결됨
- 도구 레퍼런스도 권한 프롬프트가 유휴 상태에서 자동 해결되지 않는다고 명시함
- 권한 프롬프트가 애초에 나타나지 않는 실행 방식에서는 이러한 분리가 보호 장치가 되지 못함
bypassPermissions,acceptEdits,allowedTools,--dangerously-skip-permissions,PreToolUse훅을 이용할 수 있었음- 배포 명령이 허용 목록에 있거나 권한 확인을 우회했다면
AskUserQuestion의 “staging 또는 production?”, “어떤 config인가?” 같은 선택이 남은 유일한 게이트일 수 있음
- 타이머가 권한을 부여하지는 않았지만, 이미 권한이 있는 작업의 선택 자체를 모델에 맡길 수 있었음
- 도구 스키마에는
timeout입력이 없고 모델이 이를 설정하거나 제어할 수도 없었음- 입력 매개변수는
questions,answers,annotations,metadata뿐임 - 답을 건너뛴 주체는 모델이 아니라 응답을 자동 반환한 에이전트 하네스였음
- 입력 매개변수는
출시와 되돌림 연표
- 확인된 공개 기록은 다음 순서로 이어짐
- 2026-06-29:
2.1.196출시, 신고자가 추정한 마지막 정상 버전 - 2026-06-30:
2.1.197출시, 변경 로그에는 Sonnet 5 출시 한 줄만 존재 - 2026-07-01: 자동 진행이 들어간
2.1.198출시 - 2026-07-02 02:54 UTC: Aleksey Nogin이 이슈 #73125를 등록
- 2026-07-02 03:45 UTC: 댓글에서 비공개 탈출구였던
CLAUDE_AFK_TIMEOUT_MS를 공유 - 2026-07-02: 이슈가 열린 상태에서 24개 항목을 담은
2.1.199출시, 자동 진행은 여전히 미기재 - 2026-07-03:
2.1.200에서 기본 동작을 되돌림 - 2026-07-04 18:04 UTC: 이슈 종료
- 2026-06-29:
- 이슈에는 384개 👍와 143개 댓글이 달렸으며, 신고 환경은
2.1.198, Opus, AWS Bedrock, VS Code 터미널이었음 - 문제 신고부터 기본값 전환까지 약 이틀이 걸림
2.1.200이 수정한 방식
2.1.200은 기능을 제거하지 않고 자동 진행을 기본 비활성화했으며/config를 통한 옵트인으로 바꿈- 수정 전
2.1.198에는/config설정인askUserQuestionTimeout이 없었고, 영향을 피하려면 출시 문서에 나오지 않은 환경 변수를 사용해야 했음 2.1.211에서도 전체 구현은 유지됨/config항목 이름은Question auto-continue timeout- 허용값은
60s,5m,10m,never - 설정하지 않으면
never로 처리돼 기능이 꺼짐 - 내부 기본 타임아웃은 여전히 60,000ms, 카운트다운 기준은 20,000ms
CLAUDE_AFK_TIMEOUT_MS와CLAUDE_AFK_COUNTDOWN_MS가 설정값을 덮어쓸 수 있음
- 수정은 타이머를 삭제한 것이 아니라, 설정값 또는 환경 변수가 있을 때만 활성화하도록 게이트 조건 하나를 추가한 것임
- 영향을 받는 버전에 고정된 사용자는
settings.json에서CLAUDE_AFK_TIMEOUT_MS에 매우 큰 값을 넣어 임시로 우회할 수 있었음
변경 로그에서 빠진 기능 도입
- 릴리스 노트는 공식 변경 로그와 저장소의
CHANGELOG.md에 같은 내용으로 게시됨 - 당시 기록을 고정 커밋 기준으로 보면 자동 진행의 추가는 어느 버전에도 나타나지 않음
AskUserQuestion은2.0.55이후 13개 버전에서 총 15회 등장할 만큼 평소 변경 로그에 기록되던 도구였음- 하지만 변경이 들어간 구간인
2.1.181부터2.1.200전까지는 한 번도 나타나지 않음 - 켜짐과 꺼짐이라는 두 번의 동작 변경 가운데 꺼짐만 기록됨
- 하지만 변경이 들어간 구간인
- 자동 진행을 처음 기록한 유일한 항목은
2.1.200의 “기본적으로 더 이상 자동 진행하지 않으며/config로 옵트인”한다는 문구였음 CLAUDE_AFK_TIMEOUT_MS는 변경 로그와 README 어디에도 없었음
동작을 되돌린 뒤 추가된 문서
- 현재 환경 변수 레퍼런스는 두 AFK 환경 변수를 기록하고,
2.1.198과2.1.199에서 60초 자동 진행이 기본 활성화됐다고 명시함 - 이 문서는 출시 당일 상태를 담은 문서일 수 없음
- 현재 문구가 안내하는
askUserQuestionTimeout은2.1.198실행 파일에 존재하지 않음 - Wayback Machine의 6월 23일 및 7월 1일 12:11·21:35 UTC 캡처에는
CLAUDE_AFK와AskUserQuestion이 각각 0회였음 - 대조 항목인
DISABLE_AUTOUPDATER는 모든 캡처에서 2회 확인돼 페이지 수집 실패로 인한 누락이 아니었음
- 현재 문구가 안내하는
2.1.198은 7월 1일 16:50:16 UTC에 npm에 게시됐지만, 4시간 45분 뒤의 문서에도 AFK, 자동 진행, 질문 도구, 카운트다운이 없었음- 관련 문구는 7월 1일 21:35부터 7월 5일 13:58 사이에 추가됐고, 이 구간에는
2.1.200의 되돌림도 포함됨 - 새 문서는 이미 “기본 비활성화”된 수정 후 상태만 기록해, 7월 1~2일의 실제 기본 동작이 문서화된 시점은 없었음
공개 저장소에 없는 제품 소스와 커밋
- 기능을 도입한 공개 커밋과 되돌린 공개 커밋은 모두 없음
- 공개 Git 기록에는 변경 로그와
feed.xml만 갱신한 자동 커밋 두 개가 남음 anthropics/claude-code저장소에는 216개 추적 파일이 있고 그중 104개가 Markdown이며, 실제 배포 제품 소스는 없음- 실행 가능한 파일은 예제나 이슈 추적 자동화 스크립트임
plugins/와examples/도 샘플 플러그인, GCP 게이트웨이 Terraform 설정, MDM 프로필 등을 담음
2.1.197과2.1.198태그의 차이는CHANGELOG.md와 이를 RSS로 반복한feed.xml뿐임2.1.196부터2.1.206까지 열 번의 연속 릴리스도 같은 두 파일만 바뀜- 태그는 소스 릴리스가 아니라 사실상 릴리스 노트 태그임
- 변경 로그나 저장소·태그 비교로는 실제 배포 동작을 확인할 수 없으며, 작성된 소스는 공개되지 않은 채 컴파일된 실행 파일로만 배포됨
의도적으로 설계하고 계측한 흔적
- 공식 설계 문서, PR, 변경 로그 문구 등 도입 이유를 확인할 자료는 없음
- 이름과 메시지는 자리를 비운 사람 때문에 병렬 에이전트가 무기한 차단되는 상황을 겨냥했음을 보여주는 정황 증거임
- 내부 이름
AFK는 away from keyboard를 뜻함 - 메시지는 “사용자가 키보드에서 떨어져 있을 수 있다”고 가정함
- 이슈 참가자들은 수십 개 에이전트가 며칠 동안 사람의 답을 기다리는 작업 흐름을 사용한다고 밝혔음
- 내부 이름
2.1.198에는 자동 해결 여부를 나타내는afkTimeoutMs필드가 도구 결과 스키마에 추가됨- 사람이 답한 경로에는 없고 자동 해결 시 유휴 시간을 기록함
- 모델에 자동 해결된 응답임을 알리고 터미널 출력 구성 요소를 선택하는 데 쓰임
- 같은 버전에
tengu_ask_user_question_afk_auto_advance분석 이벤트도 추가됨timeoutMs, 질문 수, 계획 모드 여부, 부분 답변 여부를 전송함- 질문 원문은 보내지 않고
source_hash와 카운터를 사용함
hadPartialAnswers가 별도 계측된 만큼 부분 답변 경로도 독립된 코드와 측정을 갖고 있었음- 동작, 카운트다운 UI, 스키마 필드, 분석 이벤트가 한 버전에 함께 들어갔으므로 우발적인 한 줄이 아니라 측정 체계를 갖춘 기능이었음
- 이 증거만으로 누가 작성·검토·승인·병합했는지, 사람이 어느 단계에 개입했는지는 알 수 없음
닫힌 소스지만 읽을 수 있는 Bun 실행 파일
- 설치된 Claude Code는 약 250MB의 심볼이 제거되지 않은 네이티브 실행 파일임
- Bun 단일 실행 파일 형식은 런타임 뒤에 모듈 그래프를 붙이며, Claude Code 실행 파일에서도
---- Bun! ----표식을 찾을 수 있음 - Bun이 JavaScript 번들을 실행 파일 안에 포함하므로
strings로 설정 이름, 메시지, 분석 이벤트 등을 읽을 수 있음 - 로컬 설치 디렉터리는 최근 버전 일부만 보관하지만, npm에는 각 버전의 플랫폼별 실행 파일이 남아 있음
@anthropic-ai/claude-code는 약 152KB의 설치용 스텁임- 실제 Linux x64용
2.1.198패키지는 약 249MB임
- 공개 소스는 없지만 각 릴리스 아티팩트를 내려받아 배포된 동작을 확인할 수 있으므로 완전한 블랙박스는 아님
2.1.197과 2.1.198 실행 파일 비교
- 두 실행 파일에서 AFK 관련 문자열을 검색하면 경계가 명확함
2.1.197:away from keyboard,CLAUDE_AFK_TIMEOUT_MS,CLAUDE_AFK_COUNTDOWN_MS가 모두 0회2.1.198: 각각 2회, 3회, 3회 등장
- 수정 후
2.1.211의 타이머 게이트에는/config값이나 환경 변수가 존재해야 한다는 조건이 추가됨2.1.198에도 외부 경쟁 실행 여부 등을 검사하는 게이트는 있었음- 다만 사용자가 끌 수 있는 조건이 없었고, 수정은 여기에
&&조건 하나를 더한 형태였음
- 기능명과 문제가 발생한 버전을 모른 채 일반적인 릴리스를 비교하기는 훨씬 어려움
strings -n 8기준 단순 비교에서는 21,903개 문자열이 달라짐- 최소 문자열 길이에 따라 81,289개 또는 29,910개로 달라질 수 있어 21,903은 고정된 릴리스 특성이 아님
- 빌드마다 미니파이어가 식별자 이름을 바꿔 대부분이 실제 기능 변경이 아닌 잡음임
- 추가된 문자열 중 대문자로 시작하고 일반 문장 형태이며 5단어 이상인 영어 문장만 걸러내면 156줄로 줄어듦
- 그 안에
Before going idle the user had selected:가 포함됨 - 대화상자가 사람 대신 답할 때 대화에 삽입하는 문자열이므로, 사전 정보 없이 읽어도 검토를 멈출 만한 변화였음
- 그 안에
curl,strings,diff로 약 5분 안에 발견할 수 있었지만, 사용자가 모든 자동 업데이트 릴리스마다 실행 파일을 검사하는 방식은 변경 로그를 대신할 수 없음
비용보다 큰 안전 문제
- 잘못된 경로를 자동 선택하면 불필요한 토큰을 소비할 수 있음
- 더 큰 문제는
AskUserQuestion을 차단형 안전 게이트로 전제한 훅과 규칙이 60초 카운트다운으로 바뀐다는 점임 - 배포, 인프라, 프로덕션 인접 스크립트처럼 위험한 환경에서도 Claude Code가 사용됨
- Claude Code가 기본 자동 업데이트되므로, 조용한 동작 변경과 결합하면 사용자가 아무 조치도 하지 않아도 기존 안전 가정이 달라질 수 있음
- 최신 버전을 즉시 받는 정책 자체가 위험한 선택일 수 있다는 논의는 On Cooldowns and Dependabot Tuning과 이어짐
자동 업데이트를 끄는 방법과 우선순위
- 업데이트 비활성화 여부는 다음 환경 변수를 순서대로 검사하며 첫 번째 일치값이 적용됨
DISABLE_UPDATES=1: 수동claude update까지 포함해 모든 업데이트 경로를 차단DISABLE_AUTOUPDATER=1: 백그라운드 확인만 중단하고 수동 업데이트는 허용하며autoUpdates설정보다 우선CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1: 자동 업데이트, 피드백 명령, 오류 보고, 원격 측정을 함께 중단
- 셸 프로필보다
~/.claude/settings.json의env블록에 넣으면 CI, cron, systemd, IDE 터미널을 포함한 모든 세션에 적용할 수 있음
{
"env": {
"DISABLE_AUTOUPDATER": "1"
}
}
- 설정 범위는 셸 프로필, 사용자별
~/.claude/settings.json, 저장소별.claude/settings.json, 중앙 관리용managed-settings.json순으로 강해짐 managed-settings.json경로는 다음과 같음- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json - Linux/WSL:
/etc/claude-code/managed-settings.json - Windows:
C:\Program Files\ClaudeCode\managed-settings.json - 기존
C:\ProgramData\ClaudeCode경로는 더 이상 읽지 않음
- macOS:
- 자동 업데이트를 끄는 CLI 플래그는 없으며
/doctor는 설치 유형과 업데이트 채널을 표시함
CLI 업데이트를 끄면 플러그인도 멈춤
- 환경 변수나
autoUpdates: false등 어떤 방식으로든 자동 업데이터를 끄면 플러그인 자동 업데이트도 중단됨 - 플러그인 탐색 문서는
DISABLE_AUTOUPDATER와 함께FORCE_AUTOUPDATE_PLUGINS=1을 설정하면 CLI는 고정하고 플러그인은 계속 갱신할 수 있다고 안내함 - 반면 실제 자동 업데이트 비활성화를 안내하는
/setup문서와 설정 환경 변수 표에는 플러그인 영향과FORCE_AUTOUPDATE_PLUGINS가 없음 - 실행 파일상 플러그인 업데이트를 멈추는 경로는 네 가지임
DISABLE_UPDATESDISABLE_AUTOUPDATERCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICautoUpdates: false
- 실행 중에는 플러그인이 멈췄다는 경고 대신 디버그 로그
Plugin autoupdate: skipped (auto-updater disabled)만 남음 - CLI를 고정하고 플러그인을 유지하는 설정은 다음과 같음
{
"env": {
"DISABLE_AUTOUPDATER": "1",
"FORCE_AUTOUPDATE_PLUGINS": "1"
}
}
FORCE_AUTOUPDATE_PLUGINS,DISABLE_AUTOUPDATER,DISABLE_UPDATES는1,true,yes,on을 대소문자 구분 없이 참으로 해석하고0은 거짓으로 처리함CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC는 값이 아니라 존재 여부만 검사해=0도 활성화하며, 이 경우 자동 업데이터와 플러그인 업데이트가 모두 멈춤
업데이트 설정의 추가 함정
- 개인정보 보호나 외부 통신 제한 목적으로
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC를 사용해도 CLI와 플러그인이 함께 고정됨 - 문서에 없는
autoUpdates: false는 네이티브 설치에서autoUpdatesProtectedForNative가 활성화되면 무시될 수 있음- 환경 변수는 이 설정보다 먼저 검사되고 조건 없이 적용됨
2.1.98은 npm 설치에서DISABLE_AUTOUPDATER가 레지스트리 버전 확인과 심볼릭 링크 수정을 완전히 막지 못하던 문제를 수정함- 자동 업데이터가
~/.local/bin/claude의 사용자 지정 실행기나 심볼릭 링크를 릴리스마다 덮어쓰던 문제도 수정됐으며, 현재/doctor는 외부 관리 실행기를 표시함 - 네이티브 및 npm 설치는 기본적으로 자체 업데이트함
- Homebrew, WinGet, apt, dnf, apk는 기본 자체 업데이트 대상이 아님
- Homebrew와 WinGet은
CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1로 옵트인할 수 있음
배포 과정에 남은 신뢰 문제
- 사람이 여러 에이전트를 동시에 감독하면 60초 안에 모든 질문을 확인하기 어렵고, 잘못된 선택 뒤 얼마나 많은 토큰이나 작업이 소비될지도 사전에 알 수 없음
- Anthropic이 기능의 작성, 검토, 승인, 병합, 문서화, 릴리스 비교 단계에서 어떤 사람과 절차를 거쳤는지는 공개 기록으로 확인할 수 없음
- 기능은 약 이틀 만에 적절한 옵트인 형태로 수정됐지만, 일일 출시 주기와 기본 자동 업데이트를 통해 예상 밖의 기능이 변경 로그 없이 배포될 수 있음이 드러남
- 실행 파일 분석은 실제 배포 내용을 검증하는 유효한 우회 수단이지만, 정확하고 잘 편집된 변경 로그를 대체하지 못함
- 악의를 전제할 근거는 없으며, 같은 종류의 일이 반복되는지가 이 배포 과정에서 무엇이 개선됐는지를 판단할 근거가 됨
댓글과 토론
Hacker News 의견들
-
Claude Code 팀에서 AskUserQuestion을 만든 Thariq임. 모델이 강력해지면서 장시간 작업이 초반 질문에 막힌다는 피드백을 받아 이를 해결하려 변경했지만, 기대하는 품질 기준에 미치지 못했으며 Claude Code의 정상적인 출시 방식도 아니었음
내부 평가는 좋았더라도 처음부터 옵트인으로 제공하고 변경 기록에 남겼어야 함. AskUserQuestion을 안전장치로 설계한 것은 아니지만 일부 사용자에게 그렇게 자리 잡았음을 이해하며, 장시간 작업과 사용자 입력의 균형을 맞출 다른 방법을 찾고 이번 배포에서 교훈을 얻겠음- 일회성 수정 대신 세분화된 권한 설정이 필요함. 매번 승인을 받는 방식과 위험한 완전 자동 실행 사이에서, “완료할 때까지 실행하되 웹을 조회하지 말고, 코드베이스 밖 파일을 건드리지 말며, 아무것도 삭제하지 말라” 같은 제한을 손쉽게 지정할 수 있어야 함
- 몇 시간 동안 끝까지 실행되길 기대하고 자리를 비웠다가, Claude가 초반에 질문한 채 멈춰 구현 시간을 낭비한 적이 실제로 많았음. 한편 AskUserQuestion은 일반 텍스트 질문보다 응답하기 편해서 Claude에게 일부러 사용하라고 할 만큼 유용하며, 실수를 인정하고 책임지는 태도도 고마움
- ApprovIQ는 제품 출시에 Claude Code를 핵심적으로 의존하지만, Anthropic에는 이 도구가 사용자만큼 중요하지 않은 듯한 비대칭성을 느낌. 수많은 사람의 경력에 영향을 미치는 제품인데 “내 변경이었다”는 개인 책임만 강조하면 오히려 신뢰가 떨어짐
Anthropic 규모의 회사라면 개인이 아니라 이런 배포를 허용한 PR 및 조직 절차의 실패를 인정하고 바로잡는 모습을 보여야 함 - 수십억 달러 규모의 최첨단 기업에서 “내 변경이었다”, “우리 기준에 못 미쳤다”고 공개적으로 사과하는 방식은 인간적이지만 전략적이지 않고 회사가 약해 보일 수도 있음. Apple이나 Google의 전성기와 비교하면 기술적 탁월성의 이미지에도 불리했을 법하며, 공개적 책임 인정을 언제 어디서 어떻게 할지 역시 중요함
이런 투명성이 인터넷 시대의 새로운 흐름인지, 기술 기업의 문화가 달라지는 것인지 궁금함 - 빠른 개발 속도에서 균형을 맞추기 어려운 만큼 Chrome처럼 다중 릴리스 채널을 두는 편이 좋겠음. 업데이트가 드문 안정판, 이런 기능을 먼저 넣을 베타판, 필요하면 카나리아판까지 제공하면 각자가 위험 감수 수준에 맞춰 선택할 수 있음
-
“모든 기능이 변경 기록에 반드시 나오지는 않는다”는 문구와, Anthropic이 변경 기록을 더 이상 완전한 이력으로 유지하지 않는 이유를 밝히지 않는 점이 특히 답답함. 또 무엇이 몰래 배포되는지 알 수 없음(1)
Boris Cherny가 해당 논의에서 한 일은 GitHub 이슈 제목의 “extreme danger”를 삭제한 것뿐임(2). Anthropic이 옵션을 추가하고 기본 비활성화한 것은 그나마 다행이지만, OpenAI는 60초 제한 시간을 비활성화하지 못하게 고수하고 있음(3). 다만 Codex 실행 도구는 더 많이 오픈 소스화돼 사용자가 직접 포크해 옵션을 추가할 수 있음- 새 모델이 배포될 때마다 이전 모델이 느려지거나 둔해지는 느낌임. 자원 할당이나 양자화 때문일 수 있지만 확신하기는 어려우며, 모델별 작업 흐름을 익히고 Opus 4.8이든 Sonnet 5든 문제가 생길 때마다 다시 조정해야 함
- 이제 코딩은 해결됐으니 자기 결정을 내리려는 사람은 공룡 취급을 받는 모양임
-
토큰 비용의 보조가 끝나면 연산 비용까지 청구하는 회사가 만든 실행 도구를 신뢰하지 않겠음. 지금은 이해관계가 일치하지만 토큰 증가가 곧 이익 증가가 되는 순간 왜곡된 유인이 너무 커짐
결국 오픈 소스 실행 도구가 승리할 가능성이 높으므로, 기업들도 직접 오픈 소스화하는 편이 나음- 오픈 소스 코딩 에이전트를 쓴다면 월 20달러 OpenAI 구독도 괜찮은 대안임. 사용량 제한은 있지만 가격은 나쁘지 않음
- 백엔드에서 사고 과정(CoT) 설정을 높이는 식으로 암묵적인 토큰 증가를 배포하기도 쉬울 것임
-
최근 터미널 창에 초점을 맞추려고 마우스를 클릭했는데, Claude Code가 이를 선택지 클릭으로 해석해 골치 아팠음
- 복사·붙여넣기 동작도 갑자기 바꿔 텍스트 복사가 매우 불편해짐. 매일 업데이트되면서 핵심 동작이 계속 달라지는 소프트웨어를 원하는 사람은 없으며, 분위기 코딩으로 쏟아낸 기능을 사용자에게 강요하면 이런 반발을 받게 됨
- 터미널은 클릭형 버튼을 기대하는 환경이 아니며, 매우 불편하고 생산성을 떨어뜨림
- 마우스 기반 앱을 원했다면 GUI를 썼을 것임. 텍스트 환경에서 굳이 그 경험을 재현하려는 이유를 이해하기 어려움
- 먼저 옵트인 여부를 물어보긴 했지만 실수로 켰다가 몹시 불편했음. 터미널에 초점을 주려고 늘 클릭하는데 이제 실제 동작까지 실행돼 버림
- 새 전체 화면 UI는 매우 나쁨. 예전 스크롤 방식도 오래 쓰면 오작동하지만 재시작 후 이어서 사용할 수는 있음
-
오늘 직접 겪었음. 에이전트의 답변을 읽는 중 질문이 떴는데, 질문까지 읽기도 전에 무언가를 자동으로 선택해 버렸음. 소프트웨어 엔지니어링이 어디로 갔는지 모르겠음
- 터미널 창에 초점을 맞추려 한 클릭이 질문과 전혀 다른 위치였는데도 승인으로 처리돼 TUI 모드를 꺼야 했음. 자동 모드를 켠 적도 없는데 활성화돼 원치 않는 셸 명령을 승인하고 있었음
terraform apply에 자동 승인 플래그를 덧붙이는 장면까지 발견해 매우 위험함
- 터미널 창에 초점을 맞추려 한 클릭이 질문과 전혀 다른 위치였는데도 승인으로 처리돼 TUI 모드를 꺼야 했음. 자동 모드를 켠 적도 없는데 활성화돼 원치 않는 셸 명령을 승인하고 있었음
-
Claude Code가 컴퓨터에 상당히 무거운 가상 머신을 구성하는 듯하면서도 기본적으로는 아무것도 샌드박스 격리하지 않는 점이 이해되지 않음. 최신 모델은 컴퓨터를 공격적으로 수정하며, 프런트엔드 UI 코드 디버깅을 부탁했는데도 사용자 권한으로 접근 가능한 Linux 시스템 파일을 다시 쓰기 시작했음
샌드박스에 넣고 나니 사소한 이유로 경계를 벗어나려는 시도가 얼마나 잦은지 드러났고, OpenCode와 로컬 LLM을 사용할 이유가 더 커짐- Claude Code 실행 도구에는 이상한 설계 결정이 많아 장기적으로는 OpenCode가 더 나을 가능성이 큼
-
악의로 해석하는 반응이 많지만, 실제로는 개발팀 자신이 쓰고 싶은 기능을 만든 것에 가까워 보임. Claude 세션을 실행해 두고 돌아왔는데 질문 하나에 막혀 아무 작업도 하지 않은 상황은 실제로 매우 답답함
Claude가 질문해 주는 것만이 재앙을 막는 유일한 장치라고 믿어서도 안 됨. Claude 내부 판단이 아니라 외부에서 부여한 권한에 안전 경계를 설정해야 함. 한편 이 글에는 “Which cuts less far than it looks.” 같은 문장이 있는데, Claude가 여기에 관해 질문하고 멈추지는 않았을 듯함- 글의 산문은 직접 썼고 Claude는 조사만 담당했으며 그 사실도 명확히 표시했음. Claude의 조사는 글머리표로 남겨 독자에게 추가 탐색의 출발점을 제공했음
LLM에게 십자말풀이를 대신 풀게 하지 않는 것과 같은 이유로, 즐거움이 사라지는 LLM 작성 산문은 게시하지 않음 - 개발팀 자신이 쓸 기능을 만든 것이라면 오히려 더 나쁨
- 기능이 유용하다는 것과, 문서화된 비활성화 방법도 없이 모두에게 기본 활성화하는 것은 전혀 다른 문제임. 문서화된 선택 기능이라면 좋지만 실제 배포는 그렇지 않았고, Claude Code 팀과 절차가 명백히 실패함
악의적이었다고 보지는 않지만 무모하고 부주의했으며, 비슷한 일이 반복돼도 팀이 배우는 모습이 보이지 않음. Claude Code는 안정적이고 신뢰할 만한 도구가 아니라 최첨단 실험에 가까우며, 다른 실행 도구 대신 선택할 때 감수해야 할 대가임 - 수십만 명에게 기능을 배포하면서 Claude가 사용자에게 어떤 종류의 질문을 하는지조차 검토하지 않았다는 게 이해되지 않음. 공식 플러그인 마켓에서 가장 많이 쓰이는 Superpowers는 첫 단계부터 제품 요구사항을 여러 차례 질문하므로 이를 건너뛰면 안 됨
질문의 심각도나 예상 응답 시간을 Claude가 표시할 매개변수조차 없었고, 제한 시간이 고작 60초였음. 질문의 답을 찾으려고 두 번째 모니터에서 문서를 확인하고 돌아오기도 전에 건너뛰었으며, 60초로는 질문의 맥락을 읽기도 어려움
악의는 아니더라도 아이디어를 실제 배포로 옮기는 과정의 판단력에 큰 공백이 드러남
- 글의 산문은 직접 썼고 Claude는 조사만 담당했으며 그 사실도 명확히 표시했음. Claude의 조사는 글머리표로 남겨 독자에게 추가 탐색의 출발점을 제공했음
-
예전에 VS Code용 Codex 플러그인에도 비슷한 기능이 들어왔다가 빠르게 제거됐음. 서로 다른 제공자의 LLM이 비슷한 발상과 편향으로 수렴하는 경우가 잦은데, Claude의 제품 관리자나 책임자에게도 LLM이 같은 아이디어를 추천했을 가능성이 궁금함
-
AskUserQuestion은 권한 승인 장치가 아니므로 기본 동작으로 괜찮아 보임. 별도 경고 기능은 필요할 수 있지만, 모델이 충분히 좋아져 스스로 선택해 진행하게 한 뒤 사용자가 수정하는 편이 다수 에이전트 관리에도 수월함
-
Anthropic이 Claude Code의 동작을 통째로 바꿀 수 있다는 점은 Pi 코딩 에이전트가 만들어진 이유 중 하나임. 사용자가 제품 위에 상당한 시간을 들여 작업 흐름을 구축한다면 일관성이 매우 중요함