跳转到主要内容

认证

Copilot SDK 支持多种认证方式。请根据用途选择。

认证方式

方式主要用途Copilot 订阅备注
GitHub 登录(CLI)开发、手动执行需要使用 copilot CLI 的登录信息
OAuth GitHub App / PAT每个用户的 token需要通过 github_token 指定
环境变量CI/CD、服务器运行需要COPILOT_GITHUB_TOKEN
BYOK(Bring Your Own Key)自有的模型提供商不需要自定义提供商配置
BYOK 请参考 Custom providers

GitHub 登录(CLI)

如果你已经通过 copilotgh CLI 登录,那么只要不指定任何东西,就会使用保存的认证信息。
use Revolution\Copilot\Facades\Copilot;

$response = Copilot::run(prompt: 'Hello');

OAuth GitHub App / PAT

将通过 OAuth 流程获取的用户访问 token,或者 Fine-grained PAT 传给 github_token
  • 预期为 gho_ / ghu_ / github_pat_
  • ghp_(Classic PAT)不推荐
use Revolution\Copilot\Facades\Copilot;

$config = array_merge(config('copilot'), [
    'github_token' => $user->github_token,
]);

$response = Copilot::useStdio($config)->run(prompt: '...');
Copilot::stop();
指定 github_tokenuse_logged_in_user 会自动变为 false。如果想显式切换,方式如下。
$config = [
    'github_token' => $user->github_token,
    'use_logged_in_user' => true,
];
详情请参考 GitHub tokengithub_tokenuse_logged_in_user 仅在 stdio 模式下有效。在 TCP 模式下,需要在 Copilot CLI 侧已经完成认证。

环境变量

通过环境变量传递 token 时,CLI 会自动检测。优先级从上到下如下。
  1. COPILOT_GITHUB_TOKEN
  2. GH_TOKEN
  3. GITHUB_TOKEN
COPILOT_GITHUB_TOKEN=github_pat_xxx
use Revolution\Copilot\Facades\Copilot;

$response = Copilot::run(prompt: 'Hello');
TCP 模式下请在 CLI 服务器侧设置环境变量。

认证的优先级

SDK 会按如下顺序解析认证信息。
  1. github_token(显式指定)
  2. 环境变量 token(COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKEN
  3. CLI 中保存的 OAuth 认证信息
  4. gh CLI 的认证信息

禁用自动登录

如果不想使用已保存的认证信息,请将 use_logged_in_user 设为 false
use Revolution\Copilot\Facades\Copilot;

$response = Copilot::useStdio([
    'use_logged_in_user' => false,
])->run(prompt: 'Hello');
github_token 一样,仅在 stdio 模式下支持。在 TCP 模式下,需要在 Copilot CLI 侧已经完成认证。

检查认证状态

可以通过获取 auth.getStatus 的结果来检查。
use Revolution\Copilot\Facades\Copilot;

$status = Copilot::client()->getAuthStatus();

if (! $status->isAuthenticated) {
    // 未认证
}
最新信息请参考 GitHub 仓库
最后修改于 2026年7月13日