{"meta":{"title":"ローカル CLI のセットアップ","intro":"SDK の自動 CLI 管理ではなく、特定の CLI バイナリを使用します。 これは高度なオプションです。CLI パスを明示的に指定し、SDK とのバージョンの互換性を確保する必要があります。","product":"GitHub Copilot","breadcrumbs":[{"href":"/ja/copilot","title":"GitHub Copilot"},{"href":"/ja/copilot/how-tos","title":"方法"},{"href":"/ja/copilot/how-tos/copilot-sdk","title":"Copilot SDK"},{"href":"/ja/copilot/how-tos/copilot-sdk/setup","title":"Copilot SDK を設定する"},{"href":"/ja/copilot/how-tos/copilot-sdk/setup/local-cli","title":"ローカル CLI"}],"documentType":"article"},"body":"# ローカル CLI のセットアップ\n\nSDK の自動 CLI 管理ではなく、特定の CLI バイナリを使用します。 これは高度なオプションです。CLI パスを明示的に指定し、SDK とのバージョンの互換性を確保する必要があります。\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n**次の場合に使用します。** 特定の CLI バージョンをピン留めするか、Go SDK を使用する必要があります (CLI は自動的に含まれません)。\n\n## どのように機能するのか\n\n既定では、Node.js、Python、および.NET SDK には、独自の CLI 依存関係が含まれます ([既定のセットアップ (バンドルされた CLI)](/ja/copilot/how-tos/copilot-sdk/setup/bundled-cli) を参照)。 これをオーバーライドする必要がある場合 (たとえば、システムにインストールされた CLI を使用する場合)、 `Connection` オプションを使用できます。\n\n![図: 説明されたプロセスを示すフローチャート。](/assets/images/help/copilot/copilot-sdk/setup-local-cli-diagram-0.png)\n\n**主な特性:**\n\n* CLI バイナリ パスを明示的に指定します\n* SDK との CLI バージョンの互換性については、お客様が責任を負います\n* 認証では、システム キーチェーン (または env vars) からサインインしているユーザーの資格情報を使用します\n* 通信は stdio 経由で行われます\n\n## Configuration\n\n### ローカル CLI バイナリの使用\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\n\nconst client = new CopilotClient({\n    cliPath: \"/usr/local/bin/copilot\",\n});\n\nconst session = await client.createSession({ model: \"gpt-5.4\" });\nconst response = await session.sendAndWait({ prompt: \"Hello!\" });\nconsole.log(response?.data.content);\n\nawait client.stop();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nfrom copilot import CopilotClient\nfrom copilot.session_events import AssistantMessageData\nfrom copilot.session import PermissionHandler\n\nclient = CopilotClient({\n    \"cli_path\": \"/usr/local/bin/copilot\",\n})\nawait client.start()\n\nsession = await client.create_session(on_permission_request=PermissionHandler.approve_all, model=\"gpt-5.4\")\nresponse = await session.send_and_wait(\"Hello!\")\nif response:\n    match response.data:\n        case AssistantMessageData() as data:\n            print(data.content)\n\nawait client.stop()\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n> \\[!NOTE]\n> Go SDK は CLI を自動的に出荷しません。\n> `PATH`に`copilot`をインストールし、`COPILOT_CLI_PATH`環境変数を設定するか、[バンドル ツール](https://github.com/github/copilot-sdk/tree/main/go/README.md#distributing-your-application-with-an-embedded-github-copilot-cli)を使用して CLI を埋め込むか、インストールされているバイナリで`StdioConnection.Path`をポイントします。\n\n```golang\nclient := copilot.NewClient(&copilot.ClientOptions{\n    Connection: copilot.StdioConnection{Path: \"/usr/local/bin/copilot\"},\n})\nif err := client.Start(ctx); err != nil {\n    log.Fatal(err)\n}\ndefer client.Stop()\n\nsession, _ := client.CreateSession(ctx, &copilot.SessionConfig{Model: \"gpt-5.4\"})\nresponse, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: \"Hello!\"})\nif response != nil {\n    if d, ok := response.Data.(*copilot.AssistantMessageData); ok {\n        fmt.Println(d.Content)\n    }\n}\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nvar client = new CopilotClient(new CopilotClientOptions\n{\n    Connection = RuntimeConnection.ForStdio(path: \"/usr/local/bin/copilot\"),\n});\n\nawait using var session = await client.CreateSessionAsync(\n    new SessionConfig { Model = \"gpt-5.4\" });\n\nvar response = await session.SendAndWaitAsync(\n    new MessageOptions { Prompt = \"Hello!\" });\nConsole.WriteLine(response?.Data.Content);\n```\n\n</div>\n\n</div>\n\n## 追加のオプション\n\n```typescript\nconst client = new CopilotClient({\n    cliPath: \"/usr/local/bin/copilot\",\n\n    // Set log level for debugging\n    logLevel: \"debug\",\n\n    // Pass extra CLI arguments\n    cliArgs: [\"--log-dir=/tmp/copilot-logs\"],\n\n    // Set working directory\n    cwd: \"/path/to/project\",\n});\n```\n\n## 環境変数の使用\n\nキーチェーンの代わりに、環境変数を使用して認証できます。 これは、CI や対話型ログインが不要な場合に便利です。\n\n```bash\n# Set one of these (in priority order):\nexport COPILOT_GITHUB_TOKEN=\"gho_xxxx\"   # Recommended\nexport GH_TOKEN=\"gho_xxxx\"               # GitHub CLI compatible\nexport GITHUB_TOKEN=\"gho_xxxx\"           # GitHub Actions compatible\n```\n\nSDK はこれらを自動的に選択します。コードの変更は必要ありません。\n\n## セッションの管理\n\nセッションの既定値はエフェメラルです。 再開可能なセッションを作成するには、独自のセッション ID を指定します。\n\n```typescript\n// Create a named session\nconst session = await client.createSession({\n    sessionId: \"my-project-analysis\",\n    model: \"gpt-5.4\",\n});\n\n// Later, resume it\nconst resumed = await client.resumeSession(\"my-project-analysis\");\n```\n\nセッションの状態は、 `~/.copilot/session-state/{sessionId}/`にローカルに格納されます。\n\n## 制限事項\n\n| 制限事項          | 詳細情報                                  |\n| ------------- | ------------------------------------- |\n| **バージョンの互換性** | CLI のバージョンが SDK と互換性があることを確認する必要があります |\n| **単一ユーザー**    | 資格情報は、CLI にサインインしたユーザーに関連付けられます       |\n| **ローカルのみ**    | CLI は、アプリと同じコンピューター上で実行されます           |\n| **マルチテナントなし** | 1 つの CLI インスタンスから複数のユーザーにサービスを提供できない  |\n\n## 次のステップ\n\n* **[既定のセットアップ (バンドルされた CLI)](/ja/copilot/how-tos/copilot-sdk/setup/bundled-cli)**: SDK の組み込み CLI を使用する (ほとんどのユース ケースに推奨)\n* **[初めてのCopilot搭載アプリを構築する](/ja/copilot/how-tos/copilot-sdk/getting-started)**: 完全な対話型アプリを構築する\n* **[認証](/ja/copilot/how-tos/copilot-sdk/auth/authenticate)**: すべての認証方法の詳細"}