{"meta":{"title":"Configuração da CLI local","intro":"Use um binário específico da CLI em vez do gerenciamento automático da CLI pelo SDK. Essa é uma opção avançada: você fornece o caminho da CLI explicitamente e é responsável por garantir a compatibilidade de versão com o SDK.","product":"GitHub Copilot","breadcrumbs":[{"href":"/pt/copilot","title":"GitHub Copilot"},{"href":"/pt/copilot/how-tos","title":"Instruções"},{"href":"/pt/copilot/how-tos/copilot-sdk","title":"SDK do Copilot"},{"href":"/pt/copilot/how-tos/copilot-sdk/setup","title":"Configurar o SDK do Copilot"},{"href":"/pt/copilot/how-tos/copilot-sdk/setup/local-cli","title":"CLI local"}],"documentType":"article"},"body":"# Configuração da CLI local\n\nUse um binário específico da CLI em vez do gerenciamento automático da CLI pelo SDK. Essa é uma opção avançada: você fornece o caminho da CLI explicitamente e é responsável por garantir a compatibilidade de versão com o SDK.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n**Use quando:** você precisa fixar uma versão específica da CLI ou trabalhar com o SDK do Go (que não inclui automaticamente uma CLI).\n\n## Como funciona\n\nPor padrão, os SDKs Node.js, Python e .NET incluem sua própria dependência da CLI (consulte [Configuração padrão (CLI empacotada)](/pt/copilot/how-tos/copilot-sdk/setup/bundled-cli)). Se você precisar substituir isso, por exemplo, para usar uma CLI instalada pelo sistema, poderá usar a opção `Connection` .\n\n![Diagrama: Fluxograma mostrando o processo descrito.](/assets/images/help/copilot/copilot-sdk/setup-local-cli-diagram-0.png)\n\n**Principais características:**\n\n* Você fornece explicitamente o caminho binário da CLI\n* Você é responsável pela compatibilidade de versão da CLI com o SDK\n* A autenticação usa as credenciais do usuário autenticado armazenadas no chaveiro do sistema (ou nas variáveis de ambiente)\n* A comunicação ocorre por meio do stdio\n\n## Configuração\n\n### Usando um binário local da 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> O SDK do Go não envia uma CLI automaticamente. Instale `copilot` em `PATH`, defina a variável de ambiente `COPILOT_CLI_PATH`, incorpore uma CLI com a [ferramenta de empacotamento](https://github.com/github/copilot-sdk/tree/main/go/README.md#distributing-your-application-with-an-embedded-github-copilot-cli) ou aponte `StdioConnection.Path` para um binário instalado.\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## Opções adicionais\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## Usando variáveis de ambiente\n\nEm vez do conjunto de chaves, você pode autenticar por meio de variáveis de ambiente. Isso é útil para CI ou quando você não deseja logon interativo.\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\nO SDK os seleciona automaticamente, sem necessidade de alterações de código.\n\n## Gerenciamento de sessões\n\nAs sessões são temporárias por padrão. Para criar sessões retomáveis, forneça sua própria ID de sessão:\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\nO estado da sessão é armazenado localmente em `~/.copilot/session-state/{sessionId}/`.\n\n## Limitações\n\n| Limitation                                | Detalhes                                                           |\n| ----------------------------------------- | ------------------------------------------------------------------ |\n| **Compatibilidade entre versões**         | Você deve garantir que sua versão da CLI seja compatível com o SDK |\n| **Usuário único**                         | As credenciais estão vinculadas a quem entrou na CLI               |\n| **Somente local**                         | A CLI é executada no mesmo computador que seu aplicativo           |\n| **Nenhum suporte para vários locatários** | Não é possível atender vários usuários de uma instância da CLI     |\n\n## Próximas Etapas \n\n* **[Configuração padrão (CLI empacotada)](/pt/copilot/how-tos/copilot-sdk/setup/bundled-cli)**: Use a CLI interna do SDK (recomendada para a maioria dos casos de uso)\n* **[Crie seu primeiro aplicativo com tecnologia do Copilot](/pt/copilot/how-tos/copilot-sdk/getting-started)**: Criar um aplicativo interativo completo\n* **[Autenticação](/pt/copilot/how-tos/copilot-sdk/auth/authenticate)**: Todos os métodos de autenticação em detalhes"}