いずみこんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「Claude APIにコードを書かせるだけでなく、実行までさせたい」と考えていませんか?
Claudeが生成したPythonコードを、自分のサーバーやローカル環境でわざわざ動かす手間をかけたくない方へ。
Claude APIのCode Execution Toolを使うと、Anthropic側のサンドボックスでコードがそのまま実行され、結果だけが返ってくるようになります。



tool_resultを自前で組み立てて返す必要がないので、実装はかなりシンプルです。
ということで、本記事ではClaude APIのCode Execution Toolを使う方法を解説します。



すぐ読み終わるので、ぜひ最後までご覧ください。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【AI】Claude APIのCode Execution Toolを使う方法
早速、Claude APIのCode Execution Toolを使う方法を見ていきます。
Code Execution Toolの仕組み
Code Execution Toolは、Anthropicが管理する隔離コンテナ上でClaudeがPythonコードとbashコマンドを実行できるサーバーサイドツールです。
リクエストのtools配列にツール定義を追加すると、Claudeが必要と判断したタイミングで自動的にコードを書き、コンテナ内で実行し、実行結果を同じレスポンスの中に含めて返します。
開発者がtool_resultブロックを組み立てて返す一般的なツール利用のループは不要で、API側だけで処理が完結します。
コンテナにはPython実行用とファイル操作用のサブツールが用意されており、ファイルの作成・閲覧・編集もコード実行と組み合わせて行えます。



コードを実行するエージェントを、自前のサンドボックスなしで作れるイメージですね。
対応モデルと必要な準備
Code Execution Toolは、Claude Opus 5・Sonnet 5・Fable 5をはじめ、Opus 4.5以降・Sonnet 4.5以降・Haiku 4.5で利用できます。
現行のツールバージョンは、いずれもanthropic-betaヘッダーなしで呼び出せます。
Pythonから使う場合、必要な準備は公式SDKのインストールとAPIキーの設定だけです。
公式のPython SDKを入れます。
pip install anthropic発行済みのAPIキーを環境変数ANTHROPIC_API_KEYに入れておくと、SDKが自動で読み込みます。
export ANTHROPIC_API_KEY="sk-ant-..."


キーはコードへ直接書かず、環境変数か.envで管理するのが基本です。
基本的なコード実行
最小構成のリクエストは、tools配列にcode_executionツールを1つ追加するだけです。
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "[2, 4, 6, 8, 10]の平均と標準偏差をコードを実行して求めて",
}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
print(response.content)ツール定義のtypeは使うバージョンを表し、nameはcode_execution固定です。
上の例では平均と標準偏差の計算をClaudeに依頼しており、Claudeがコンテナ内でPythonを実行して数値を返します。



「計算して」「実行して」と明示すると、コード実行が選ばれやすくなります。
レスポンスの読み方
レスポンスのcontentには、Claudeが実行したコマンドを表すserver_tool_useブロックと、実行結果を表すbash_code_execution_tool_resultブロックが交互に並び、最後にClaudeのテキスト回答が入ります。
bash_code_execution_tool_result内のbash_code_execution_resultには、標準出力のstdout、エラー出力のstderr、終了コードのreturn_codeが含まれます。
コマンドが$OUTPUT_DIRにファイルを残した場合、contentリストに各ファイルのfile_idが入ります。
for block in response.content:
if block.type == "text":
print(block.text)
elif block.type == "server_tool_use":
print("実行:", block.input)
elif block.type == "bash_code_execution_tool_result":
result = block.content
if result.type == "bash_code_execution_result":
print("stdout:", result.stdout)
print("return_code:", result.return_code)


return_codeが0以外なら、stderrを見れば失敗理由がわかります。
コンテナを再利用して状態を引き継ぐ
リクエストごとに新しいコンテナが割り当てられ、作成したファイルは次のリクエストには残りません。
レスポンスのトップレベルにあるcontainerオブジェクトのidを、次のリクエストのcontainer引数へ渡すと、同じコンテナを使い続けられます。
code_execution_20260120以降では、ファイルだけでなくPythonインタプリタの変数などのREPL状態も保持されます。
res1 = client.messages.create(
model="claude-opus-5",
max_tokens=4096,
messages=[{"role": "user", "content": "乱数を1つ作って /tmp/n.txt に保存して"}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
res2 = client.messages.create(
container=res1.container.id,
model="claude-opus-5",
max_tokens=4096,
messages=[{"role": "user", "content": "/tmp/n.txt の数値を読んで2乗して"}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)コンテナは作成から30日で失効し、約5分アクセスがないとチェックポイントされて、次のリクエストで復元されます。



データ分析を何回かに分けて進めたいときに便利です。
ファイルをアップロードして分析する
手元のCSVやExcelを分析させたい場合は、Files APIでファイルをアップロードし、メッセージ内のcontainer_uploadブロックでfile_idを指定します。
from pathlib import Path
file_object = client.files.upload(file=Path("sales.csv"))
response = client.messages.create(
model="claude-opus-5",
max_tokens=4096,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "アップロードしたCSVを月次で集計してグラフを作って"},
{"type": "container_upload", "file_id": file_object.id},
],
}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)Claudeが生成した画像やレポートは、$OUTPUT_DIRに保存されたものがfile_id付きで返るので、Files APIのダウンロードで取得できます。
for block in response.content:
if block.type == "bash_code_execution_tool_result":
result = block.content
if result.type == "bash_code_execution_result":
for output in result.content:
meta = client.files.retrieve_metadata(output.file_id)
data = client.files.download(output.file_id)
data.write_to_file(meta.filename)サンドボックスの制約
コンテナには次のような制約があります。
- Pythonは3.11、OSはLinux(x86_64)
- メモリ5GiB、ディスク5GiB、CPU1コア
- インターネット接続は無効で、実行時のパッケージ追加インストールは不可
- 使えるのはpandas・numpy・scipy・scikit-learn・matplotlib・openpyxl・pillow・python-docxなどの事前インストール済みライブラリのみ
- 実行できるのはClaude API・Claude Platform on AWS・Microsoft Foundryで、Amazon BedrockとGoogle Cloudは非対応



外部APIを叩く処理はサンドボックス内では動かない点に注意です。
料金の考え方
web_search_20260209やweb_fetch_20260209と一緒にリクエストへ含めた場合、コード実行分の追加課金はありません。
単独で使う場合は実行時間で課金され、組織ごとに月1,550時間の無料枠があり、超過分はコンテナ1台あたり1時間0.05ドルです。
実行時間は最低5分としてカウントされ、ファイルを添付したリクエストはツールが呼ばれなくてもコンテナへ読み込むため課金対象になります。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【厳選】フリーランスエンジニアにおすすめなエージェント3選


フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。
僕が実際に利用しているおすすめエージェントを紹介しますね。



エージェントは必ず複数登録してください。
担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…
僕は実際に5つのエージェントを使い回していますよ。
フリーランスを始めるなら「レバテックフリーランス


」
- 業界最大級の案件数。
- 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
- 案件参画中のフォローの充実。
※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。
レバテックフリーランス
![]()
![]()
とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!



僕もはじめてフリーランスの案件を貰ったのはレバテックフリーランス
![]()
![]()
保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。
手厚い保障を重視したいなら「Midworks


」
- 手厚い保障で正社員並みの安心感。
- 還元率60%超え&単価公開でクリアな契約。
- 給与保障制度(審査あり)。
Midworks
![]()
![]()
フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。



僕も何度か案件を紹介してもらいました。
自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。
週2〜3日の案件探しなら「ITプロパートナーズ


」
- IT案件に特化したフリーランスエージェント。
- 週2〜3日の案件が豊富。
- リモート案件が多く、直エンドなので単価も高い。
※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。
ITプロパートナーズ
![]()
![]()
週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。



週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。
とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!
よくある質問
Code Execution Toolにベータヘッダーは必要ですか?
現行の3バージョン(code_execution_20250825 / code_execution_20260120 / code_execution_20260521)は、いずれもanthropic-betaヘッダーなしで利用できます。
REPLの状態保持やプログラマティックなツール呼び出しが必要な場合はcode_execution_20260120以降を指定します。
サンドボックスから外部APIを呼び出せますか?
コンテナはインターネット接続が無効なので、外部への通信や実行時のパッケージインストールはできません。
使えるのは事前インストール済みのライブラリと、アップロードしたファイルだけです。
長い処理でレスポンスが途中で止まりました。
処理が長引くと、stop_reasonがpause_turnになってターンが一時停止することがあります。
返ってきたレスポンスの内容をそのまま次のリクエストのメッセージへ渡せば、Claudeが続きを実行します。
Amazon BedrockやGoogle Cloudでも使えますか?
Code Execution Toolが使えるのはClaude API・Claude Platform on AWS・Microsoft Foundryです。
Amazon BedrockとGoogle Cloudでは利用できないため、コード実行が必要なワークフローはClaude API側で組む必要があります。
まとめ
今回は、Claude APIのCode Execution Toolを使う方法について解説しました。
以下が本記事のまとめになります。



最後までお読みいただき、ありがとうございました!
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
- クソおすすめ本



海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。








