요약: Claude의 code_execution_20260120은 sandbox 안에서 REPL 상태 지속과 programmatic tool calling을 지원하는 코드 실행 버전이다. 단순 계산 도구로만 보면 놓치는 가치가 있다. 데이터 분석, 검색 결과 필터링, 파일 생성, 에이전트 검증 루프를 만들 때 실행 환경 분리와 90초 셀 제한, ZDR 불가 조건을 함께 설계해야 한다.
Claude API의 code execution tool은 Python과 Bash를 sandboxed container에서 실행해 데이터 분석, 파일 처리, 계산, 시각화, 코드 작성, 시스템 명령을 수행하게 해준다. 2026년 6월 18일 release note에 따르면 Python, TypeScript, Go, Java, Ruby, PHP, C# SDK가 code_execution_20260120을 지원한다. 이 버전은 REPL state persistence와 programmatic tool calling을 추가하며, 별도 beta header 없이 tool type으로 지정할 수 있다.
많은 팀이 코드 실행을 “LLM이 계산기를 쓰는 기능” 정도로 본다. 하지만 실무에서는 더 넓다. 검색 결과를 가져온 뒤 sandbox에서 정규화하고, CSV를 읽고, 중간 결과를 파일로 저장하고, 테스트 데이터를 만들어 검증하고, 필요하면 외부 client-provided tool과 역할을 나누는 방식까지 가능하다. 특히 agentic workflow에서는 모델이 말로 추론한 내용을 실행으로 확인할 수 있어 hallucination을 줄이는 데 도움이 된다.
Anthropic 문서 기준 code_execution_20250825는 Bash commands와 file operations를 지원하고, 여러 모델에서 사용할 수 있다. code_execution_20260120은 여기에 REPL state persistence와 sandbox 내부 programmatic tool calling을 더한다. code_execution_20260521은 같은 runtime에 90초 per-cell execution time limit을 tool description에 명시해 Claude가 긴 셀을 예산 안에서 계획하도록 돕는다.
모델 호환성도 봐야 한다. Claude Fable 5, Mythos 5, Opus 4.8, Opus 4.7, Opus 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5는 세 버전을 지원한다. Haiku 4.5는 code_execution_20250825만 지원한다. 즉 “저렴한 Haiku로 코드 실행까지 처리하자”는 설계는 버전 기능 때문에 막힐 수 있다.
운영 기본값은 최신 호환 버전으로 잡는 편이 낫다. 다만 이미 90초 제한 안내가 중요한 workload라면 20260521이 더 적합하다. 반대로 문서나 SDK 예시가 20250825 중심이라도, REPL 상태와 programmatic tool calling이 필요하면 20260120 이상을 명시해야 한다.
REPL state persistence는 한 번 계산한 변수, 로딩한 데이터, 정의한 함수가 이어지는 흐름에서 의미가 있다. 대화형 데이터 분석을 예로 들면, 첫 셀에서 CSV를 읽고 schema를 확인한 뒤, 다음 셀에서 결측치를 처리하고, 그 다음 셀에서 집계를 만들 수 있다. 매번 파일을 다시 읽고 전처리 코드를 반복하지 않아도 된다.
이 장점은 비용과 정확도 양쪽에 영향을 준다. 코드가 짧아지고 중간 상태가 명확해지면 모델이 긴 코드를 한 번에 생성하다가 실수할 가능성이 줄어든다. 에러가 나도 마지막 단계만 수정하면 된다. 사용자는 “다시 전체 분석해줘”가 아니라 “방금 만든 dataframe에서 지역별로 다시 묶어줘”라고 요청할 수 있다.
다만 상태 지속은 착각도 만든다. Claude API 요청에서 여러 실행 환경을 섞으면 모델이 state가 공유된다고 오해할 수 있다. Anthropic 문서는 code_execution tool과 client-provided bash tool을 함께 제공할 때, 두 환경의 변수·파일·state가 공유되지 않는다고 시스템 프롬프트에 명시하라고 권장한다. 이 지침을 넣지 않으면 모델이 Anthropic sandbox에 만든 파일을 로컬 shell에서 읽으려 하거나 반대로 행동할 수 있다.
code_execution_20260120의 또 다른 포인트는 programmatic tool calling이다. sandbox 안에서 코드가 다른 도구 호출 흐름과 결합될 수 있으면, 모델은 단순히 결과를 눈으로 읽는 대신 계산된 기준으로 다음 행동을 결정할 수 있다. 예를 들어 web search 결과 50개를 받은 뒤, sandbox에서 도메인 중복을 제거하고 날짜를 파싱하고 신뢰도 점수를 매긴 다음, 상위 5개만 본문 컨텍스트로 올릴 수 있다.
이 방식은 context window 절약에 좋다. 검색 결과 전체를 모델에 모두 넣으면 토큰이 빨리 찬다. 반대로 code execution으로 먼저 필터링하면 실제 reasoning에 필요한 정보만 남는다. Anthropic 문서도 web search 또는 web fetch와 함께 code execution을 쓰면 dynamic filtering으로 정확도를 높이고 토큰 소비를 줄일 수 있다고 설명한다.
또한 code execution은 web search나 web fetch와 함께 쓰일 때 추가 code execution charge가 없다고 안내된다. 표준 input/output token cost는 발생하지만, 별도의 코드 실행 비용이 붙지 않는다는 뜻이다. 검색 기반 research agent를 운영하는 팀이라면 이 조합을 비용 최적화 후보로 볼 수 있다.
중요한 제한도 있다. Code execution feature는 Zero Data Retention(ZDR)에 eligible하지 않다. 민감한 고객 데이터, 내부 소스, 개인 정보가 들어가는 workload라면 이 조건을 먼저 확인해야 한다. “sandbox니까 안전하다”와 “데이터 보존 정책상 허용된다”는 다른 문제다.
파일 업로드를 통해 CSV, Excel, 이미지 등을 분석할 수 있지만, Files API beta header가 필요한 경우도 있다. 또한 sandbox가 외부 로컬 시스템과 같은 환경이 아니므로, 로컬 credential이나 private network 접근이 필요한 작업은 client-provided tool 또는 별도 인프라에서 처리해야 한다.
시간 제한도 설계에 넣어야 한다. 20260521 설명에 따르면 각 cell은 90초 wall-clock time limit을 가진다. 초과하면 detection_timeout 결과가 나온다. 긴 크롤링, 대형 모델 학습, 오래 걸리는 simulation을 하나의 셀에 넣으면 실패한다. 작업을 작은 단계로 나누고, 중간 산출물을 파일로 저장하고, timeout이 나도 재개할 수 있게 만들어야 한다.