コンテンツにスキップ

TypeScript SDK を使う

tier 3(必要になったら)確認 1 か月前(2026年8月23日)

どこまで来たら使えたと言えるか

面: 両方で同じ

段達成したと言える状態
1. 触る@anthropic-ai/claude-agent-sdk を入れ、query() の返すストリームを最後まで受け取れた
2. 入れるOptions で必要なものだけを設定し、allowedTools が制限ではなく自動承認であることを踏まえた構成にした
3. 効かせる起動時間や配布形態(startup()、Bun へのコンパイル、バイナリ解決)の問題に自分で対処できる

何のためのものか

TypeScript 用 Agent SDK。query() が主要関数で、メッセージをストリームとして返す async generator を作る。

触る

Terminal window
npm install @anthropic-ai/claude-agent-sdk

SDK はプラットフォーム別のネイティブ Claude Code バイナリを optional dependency としてバンドルする。 SDK バージョンはバンドルされた Claude Code バージョンと一致する(SDK v0.3.X は Claude Code v2.1.X)。

query() に prompt と options を渡し、返ってきた Query を反復する。

入れる

Options から必要なものだけ設定する。よく使うのは次のあたり。

プロパティ意味
allowedTools自動承認するツール(制限ではない)。 未リストのツールは permissionMode と canUseTool に渡る
canUseToolカスタムパーミッション関数。パーミッションフローがそのステップに到達した場合のみ呼ばれる
agentsプログラム定義のサブエージェント
additionalDirectoriesアクセスできる追加ディレクトリ
abortController操作のキャンセル
continue直近の会話を継続する

permissionMode: 'bypassPermissions' を使うなら allowDangerouslySkipPermissions も要る。

Options 型は非常に多くのフィールドを持つ。 全体は公式の TypeScript SDK リファレンスを見る。

効かせる

  • 起動を速くする。 startup() で CLI サブプロセスを事前起動し、返ってきた WarmQuery の .query(prompt) を呼ぶと既に起動済みのプロセスに書き込む(初期化タイムアウトの既定は 60000ms)
  • 単一実行ファイルに固める。 bun build --compile では require.resolve が $bunfs 内で機能せずバイナリを見つけられない。extractFromBunfs() で取り出し、pathToClaudeCodeExecutable に渡す
  • バイナリが見つからないとき。 package manager が optional dependency をスキップすると Native CLI binary for <platform> not found になる。別途入れた claude のパスを pathToClaudeCodeExecutable に指定する

落とし穴

  • env オプションはサブプロセス環境を置き換える(Python SDK と違う)。...process.env をスプレッドして PATH などを保持する
  • allowedTools は制限ではない。 「これだけ使わせる」つもりで書くと、他のツールがモードとコールバック次第で通る
  • resolveSettings() はアルファ版で、API が変わりうる
  • Yarn 1.x は libc フィールドを適用しないため Linux で glibc と musl の両方が入る(SDK は正しい方を起動する)

根拠と前後

このページが書ける範囲は、根拠にした facts に書かれていることだけです。 仕様そのものはそちらを読んでください。