「Claude APIをターミナルから直接叩きたいが、curlでJSONを手書きするのがつらい」という声をよく聞く。
2026年4月、Anthropicはその問題を解決するCLIツール「ant」を正式にリリースした。HomebrewやGoでインストールでき、YAML入力・レスポンスフィルタ・Claude Codeとのネイティブ統合という3つの特徴を持つ。curlと比べると手間が半分以下になる。
この記事では、antの概念から始まり、インストール・認証・基本操作・YAML連携・Claude Codeとの使い方まで、実際のコマンドとともに説明する。
そもそもant CLIとは何か
antはAnthropicが開発したClaude API専用のコマンドラインクライアントだ。Go言語で書かれており、GitHubにMITライセンスで公開されている(anthropics/anthropic-cli)。
curlとの最大の違いは3点ある。
- YAML/JSONどちらでもリクエストを記述できる — フラグで渡すか、stdinにパイプするか、ヒアドキュメントを使うかを状況で選べる
- –transformフラグでレスポンスをその場でフィルタできる — GJSONパス記法でJSONから必要なフィールドだけ取り出せる。別途jqが不要
- Claude Codeがネイティブに理解している — Claude Code上で「直近のセッションを一覧して」と指示するだけで、Claude CodeがantコマンドをシェルアウトしてAPIを操作する
AIエージェントの設計・運用・デバッグという業務では、API呼び出しをスクリプトに組み込んだり、レスポンスをパイプして加工したりする機会が多い。antはそのフローに自然に組み込める。
インストール方法は3通り
公式が推奨する順にインストール方法を紹介する。
Homebrew(macOS — 最も簡単)
Homebrewが入っていれば2コマンドで完了する。
# インストール
brew install anthropics/tap/ant
# macOSのGatekeeperを解除(初回のみ必要)
xattr -d com.apple.quarantine "$(brew --prefix)/bin/ant"
# バージョン確認
ant --version
動作環境: macOS(Homebrew 3.x以降)、2026年4月時点でv1.0.0
curl(Linux / WSL)
VERSION=1.0.0
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/')
curl -fsSL "https://github.com/anthropics/anthropic-cli/releases/download/v${VERSION}/ant_${VERSION}_${OS}_${ARCH}.tar.gz"
| sudo tar -xz -C /usr/local/bin ant
Go install(ソースから)
# Go 1.22以上が必要
go install github.com/anthropics/anthropic-cli/cmd/ant@latest
# PATHを通す(~/.zshrcや~/.bashrcに追記)
export PATH="$PATH:$(go env GOPATH)/bin"
注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
認証設定とはじめてのリクエスト
antはAPIキーを環境変数から読む。ハードコードは絶対NG。
# ~/.zshrc または ~/.bashrc に追記
export ANTHROPIC_API_KEY=sk-ant-api03-...
source ~/.zshrc
# 動作確認 — hello world
ant messages create
--model claude-sonnet-4-6
--max-tokens 256
--message '{role: user, content: "Hello, Claude"}'
レスポンスはターミナル出力時は自動でプリティプリントされ、パイプ時はコンパクトJSONになる。
YAMLでリクエストを書く — curlとの決定的な違い
antの最大の特徴の一つが、YAML形式でAPIリクエストのボディを記述できる点だ。複数ターンの会話やツール定義を含むリクエストで特に威力を発揮する。
以下は、curlでの書き方とantのYAML記法の比較だ。
| 観点 | curl | ant (YAML) |
|---|---|---|
| 記述量 | 多い(JSONのエスケープ地獄) | 少ない(YAML自然記法) |
| ファイル参照 | base64エンコード手動対応 | @path で自動エンコード |
| 配列フィールド | フラット文字列で表現困難 | YAML配列で直感的に記述 |
| レスポンス加工 | 別途jq等が必要 | –transform で完結 |
実際にAdvisor Strategyを有効にしたリクエストをYAMLで書いてみると、差は一目瞭然だ。
# advisor_request.yaml
# 動作環境: ant v1.0.0, 2026年4月
model: claude-sonnet-4-6
max_tokens: 4096
tools:
- type: advisor_20260301
name: advisor
model: claude-opus-4-6
messages:
- role: user
content: Goで並行ワーカープールを実装してください。
# YAMLファイルをstdinにパイプしてリクエスト
ant beta:messages create --beta advisor-tool-2026-03-01 < advisor_request.yaml
# ヒアドキュメントでも同様に書ける
ant beta:messages create --beta advisor-tool-2026-03-01 <<'YAML'
model: claude-sonnet-4-6
max_tokens: 2048
messages:
- role: user
content: "AIエージェントのメモリ設計を教えてください"
YAML
注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
–transformでレスポンスをその場で加工する
GJSONパス記法を使えば、jqなしでレスポンスの必要部分だけを取り出せる。
# エージェント一覧からIDと名前だけ抽出
ant beta:agents list
--transform "{id,name,model}"
--format jsonl
# 出力例
# {"id": "agent_011CYm1...", "name": "Docs Agent", "model": "claude-sonnet-4-6"}
# 新規作成したエージェントのIDだけをシェル変数に格納
AGENT_ID=$(ant beta:agents create
--name "Research Agent"
--model '{id: claude-sonnet-4-6}'
--transform id --format yaml)
echo $AGENT_ID
# agent_011CYm1BLqPXpQRk5khsSXrs
スクリプト内でAPIリソースを操作するとき、IDを変数に入れてパイプする操作が劇的にシンプルになる。
YAML + Gitでリソースをバージョン管理する
antのもう一つの強みは、AgentやEnvironmentといったAPIリソースをYAMLファイルとしてリポジトリに保存し、CI/CDで同期できる点だ。
# summarizer.agent.yaml
name: Summarizer
model: claude-sonnet-4-6
system: |
あなたは要約アシスタントです。要点を3行以内でまとめてください。
tools:
- type: agent_toolset_20260401
# 初回作成
ant beta:agents create < summarizer.agent.yaml
# 更新(versionはAPIレスポンスから取得した値を使う)
ant beta:agents update
--agent-id "$AGENT_ID"
--version 1
< summarizer.agent.yaml
このパターンを使うと、Agentの変更履歴をGit上で管理でき、チームでのレビューもやりやすくなる。インフラコードと同じ管理フローをAIエージェント定義に適用できる、というのは実際に試してみると便利さが伝わる。
Claude CodeからantでAPIを操作する
Claude CodeはantのコマンドをネイティブにサポートしているおかげでClaude Code上で自然言語で指示するだけで、Claude Codeが裏でantを呼び出してAPIを操作してくれる。
たとえば、Claude Codeに「./reportsフォルダ内のPDFを全てFiles APIにアップロードしてIDを返して」と指示すると、Claude Codeが以下のようなコマンドを生成して実行する。
# Claude Codeが自動生成するコマンドの例(実際にはClaude Codeが実行する)
for pdf in ./reports/*.pdf; do
ant beta:files upload --file "$pdf" --transform id --format yaml
done
ユーザーはAPIリファレンスを調べなくても、Claude CodeがantのインターフェースをAPIのコンテキストを踏まえて適切なコマンドに変換してくれる。
よくあるエラーと対策
❌ APIキーが読まれない
ANTHROPIC_API_KEY が設定されていないとき、antは以下のエラーを返す。
Error: authentication_error - invalid x-api-key
⭕ ~/.zshrcへの追記後に source ~/.zshrc を実行する。または --api-key フラグで直接渡す(スクリプト用途限定)。
❌ macOSで「開発元が未確認」エラー
Homebrewでインストール直後、初回実行時にGatekeeperが遮断する。
⭕ xattr -d com.apple.quarantine "$(brew --prefix)/bin/ant" を実行する。
❌ go installでコマンドが見つからない
GOPATHのbinディレクトリがPATHに入っていないケース。
⭕ export PATH="$PATH:$(go env GOPATH)/bin" をシェル設定に追記する。
❌ betaリソースで400エラー
beta:プレフィックスのコマンドは自動でbetaヘッダーを付与するが、Advisor StrategyのようにAdditionalのベータヘッダーが必要な場合は --beta フラグで明示する。
⭕ ant beta:messages create --beta advisor-tool-2026-03-01 ...
結局どう使えばいいのか
正直、antが最も活きる場面は「APIリソースの管理・探索」と「CI/CDへの組み込み」の2つだと思っている。単発でメッセージを送るだけなら、まだcurlでも困らない。でもAgentやEnvironmentを定義してバージョン管理したい、あるいはClaude Codeとシームレスに連携したいなら、antを使わない理由がない。
まだベータ機能(Managed Agentsなど)が多く、今後仕様が変わる可能性はある。公式ドキュメントの更新を追いながら使うのが安全だ。
参考・出典
- anthropics/anthropic-cli — GitHub — Anthropic公式リポジトリ(参照日: 2026-04-09)
- CLI — Claude API Docs — Anthropic公式ドキュメント(参照日: 2026-04-09)
- Anthropic Launches Claude Managed Agents — blockchain.news(参照日: 2026-04-09)
AIエージェントの構築パターン全般については、AIエージェント構築完全ガイドで体系的にまとめています。
まとめ:今日から始める3つのアクション
- 今日やること:
brew install anthropics/tap/antでインストールしてant messages createでAPIが呼び出せることを確認する - 今週中: よく使うAgentやEnvironment定義をYAMLファイル化してGitリポジトリにコミットする
- 今月中: CI/CDパイプラインにantコマンドを組み込み、エージェント更新を自動デプロイするフローを構築する
あわせて読みたい:
- AIエージェントのメモリ設計|Short/Long/Episodic実装ガイド — エージェントの状態管理を深掘り
- Claude Code×GitHub Actions|CI/CD自動化の全手順 — antとも組み合わせられるCI/CDパターン
AIエージェント導入やClaude活用についてお困りの方は、Uravationのお問い合わせフォームからご相談ください。
この記事はAIgent Lab編集部がお届けしました。