认证
Copilot SDK 支持多种认证方式。请根据用途选择。认证方式
BYOK 请参考 Custom providers。
Microsoft Entra ID
要使用内置的 Microsoft Entra 登录和 token 刷新,请将宿主应用注册到客户端。将clientId 设为 Entra 应用注册的应用程序(客户端)ID。可以传入 EntraAuthConfig 实例或数组。空值或仅包含空白的值会抛出 InvalidArgumentException。
server.connect 握手期间将客户端 ID 发送给运行时。此注册与显式请求 token 的 accounts.acquireEntraToken 服务器 RPC 是分开的。如果设置了 Entra 配置,而运行时版本过旧、不支持 connect,SDK 会抛出 This runtime does not support Entra client configuration.,而不是静默忽略该设置。此时请更新运行时。其他认证方式仍可继续使用。
GitHub 登录(CLI)
如果你已经通过copilot 或 gh CLI 登录,那么只要不指定任何东西,就会使用保存的认证信息。
OAuth GitHub App / PAT
将通过 OAuth 流程获取的用户访问 token,或者 Fine-grained PAT 传给github_token。
- 预期为
gho_/ghu_/github_pat_ ghp_(Classic PAT)不推荐
github_token 时 use_logged_in_user 会自动变为 false。如果想显式切换,方式如下。
github_token 和 use_logged_in_user 仅在 stdio 模式下有效。在 TCP 模式下,需要在 Copilot CLI 侧已经完成认证。
屏蔽宿主生成的密钥
如果宿主应用通过 MCP OAuth 等方式动态获取 token,请将其注册到 Copilot CLI 的脱敏过滤器中。CLI 会在会话日志和导出内容中屏蔽已注册的值。onMcpAuthRequest 获取和传递 token 是分开的。请在获取 token 后显式调用。SDK 不会为此 RPC 持久化这些值,也不会单独记录它们。
环境变量
通过环境变量传递 token 时,CLI 会自动检测。优先级从上到下如下。COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKEN
认证的优先级
SDK 会按如下顺序解析认证信息。github_token(显式指定)- 环境变量 token(
COPILOT_GITHUB_TOKEN→GH_TOKEN→GITHUB_TOKEN) - CLI 中保存的 OAuth 认证信息
ghCLI 的认证信息
禁用自动登录
如果不想使用已保存的认证信息,请将use_logged_in_user 设为 false。
github_token 一样,仅在 stdio 模式下支持。在 TCP 模式下,需要在 Copilot CLI 侧已经完成认证。
检查认证状态
可以通过获取auth.getStatus 的结果来检查。
为交互式登录选择账户
通过会话 RPC 枚举loginAccounts,即可获取可在指定提供商中复用的已保存身份。每一项的 label 用于显示,active 表示该身份是否与当前会话的活动账户一致。accountId 是由提供商拥有的不透明 ID。请不要解析或修改它,直接原样传给登录请求。
mode: 'default' 可以按照提供商的常规行为复用已保存的身份。使用 mode: 'selectAccount' 则会显式显示提供商的账户选择器,此时不要传入 accountId。begin(LoginProviderKind::ENTRA) 等现有调用方式仍可继续使用。
最新信息请参考 GitHub 仓库。