AIエージェント入門

ant CLI入門|Claude API公式CLIセットアップ

ant CLI入門|Claude API公式CLIセットアップ

この記事の結論

ant CLIでClaude APIと高速対話。YAML入力・Claude Code統合の設定方法をコード付きで解説。

「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など)が多く、今後仕様が変わる可能性はある。公式ドキュメントの更新を追いながら使うのが安全だ。

参考・出典


AIエージェントの構築パターン全般については、AIエージェント構築完全ガイドで体系的にまとめています。

まとめ:今日から始める3つのアクション

  1. 今日やること: brew install anthropics/tap/ant でインストールして ant messages create でAPIが呼び出せることを確認する
  2. 今週中: よく使うAgentやEnvironment定義をYAMLファイル化してGitリポジトリにコミットする
  3. 今月中: CI/CDパイプラインにantコマンドを組み込み、エージェント更新を自動デプロイするフローを構築する

あわせて読みたい:

AIエージェント導入やClaude活用についてお困りの方は、Uravationのお問い合わせフォームからご相談ください。

この記事はAIgent Lab編集部がお届けしました。

Need help moving from reading to rollout?

この記事を読んで導入イメージが固まってきた方へ

Uravationでは、AIエージェントの要件整理、PoC設計、社内導入、研修まで一気通貫で支援しています。

この記事をシェア

X Facebook LINE

※ 本記事の情報は2026年4月時点のものです。サービスの料金・仕様は変更される可能性があります。最新情報は各サービスの公式サイトをご確認ください。

関連記事