> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# 인증 - GitHub Copilot SDK for Laravel

> Laravel Copilot SDK의 인증 방식을 이해하고, 로컬 개발, CI, 서버 실행, BYOK에 적합한 방법을 선택합니다.

## 인증

Copilot SDK는 여러 인증 방법을 지원합니다. 용도에 맞게 선택하세요.

## 인증 방법

| 방법                       | 주요 용도        | Copilot 구독 | 비고                        |
| ------------------------ | ------------ | ---------- | ------------------------- |
| GitHub 로그인(CLI)          | 개발, 수동 실행    | 필요         | `copilot` CLI의 로그인 정보를 사용 |
| OAuth GitHub App / PAT   | 사용자별 토큰      | 필요         | `github_token`으로 지정       |
| 환경 변수                    | CI/CD, 서버 운영 | 필요         | `COPILOT_GITHUB_TOKEN` 등  |
| BYOK(Bring Your Own Key) | 자체 모델 프로바이더  | 불필요        | 커스텀 프로바이더 설정              |

BYOK는 [Custom providers](/ko/packages/laravel-copilot-sdk/custom-providers)를 참고하세요.

## GitHub 로그인(CLI)

`copilot` 또는 `gh` CLI에 로그인이 되어 있는 경우, 아무것도 지정하지 않으면 저장된 인증 정보가 사용됩니다.

```php theme={null}
use Revolution\Copilot\Facades\Copilot;

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

## OAuth GitHub App / PAT

OAuth 플로우로 취득한 사용자 액세스 토큰 또는 Fine-grained PAT를 `github_token`에 전달합니다.

* `gho_` / `ghu_` / `github_pat_`을 상정
* `ghp_`(Classic PAT)는 권장하지 않음

```php theme={null}
use Revolution\Copilot\Facades\Copilot;

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

$response = Copilot::useStdio($config)->run(prompt: '...');
Copilot::stop();
```

`github_token`을 지정하면 `use_logged_in_user`는 자동으로 `false`가 됩니다. 명시적으로 전환하려면 다음과 같이 합니다.

```php theme={null}
$config = [
    'github_token' => $user->github_token,
    'use_logged_in_user' => true,
];
```

자세한 내용은 [GitHub token](/ko/packages/laravel-copilot-sdk/github-token)을 참고하세요.
`github_token`과 `use_logged_in_user`는 stdio 모드 전용입니다. TCP 모드에서는 Copilot CLI 쪽에서 인증되어 있어야 합니다.

## 환경 변수

환경 변수로 토큰을 전달하는 경우 CLI가 자동으로 검출합니다. 우선순위는 위에서부터 순서대로입니다.

1. `COPILOT_GITHUB_TOKEN`
2. `GH_TOKEN`
3. `GITHUB_TOKEN`

```dotenv theme={null}
COPILOT_GITHUB_TOKEN=github_pat_xxx
```

```php theme={null}
use Revolution\Copilot\Facades\Copilot;

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

TCP 모드에서는 CLI 서버 쪽의 환경 변수를 설정하세요.

## 인증 우선순위

SDK는 다음 순서로 인증 정보를 해결합니다.

1. `github_token`(명시적 지정)
2. 환경 변수 토큰(`COPILOT_GITHUB_TOKEN` → `GH_TOKEN` → `GITHUB_TOKEN`)
3. CLI에 저장된 OAuth 인증 정보
4. `gh` CLI의 인증 정보

## 자동 로그인 비활성화

저장된 인증 정보를 사용하지 않으려면 `use_logged_in_user`를 `false`로 설정합니다.

```php theme={null}
use Revolution\Copilot\Facades\Copilot;

$response = Copilot::useStdio([
    'use_logged_in_user' => false,
])->run(prompt: 'Hello');
```

`github_token`과 마찬가지로 stdio 모드에서만 지원됩니다. TCP 모드에서는 Copilot CLI 쪽에서 인증되어 있어야 합니다.

## 인증 상태 확인

`auth.getStatus`의 결과를 취득해 확인할 수 있습니다.

```php theme={null}
use Revolution\Copilot\Facades\Copilot;

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

if (! $status->isAuthenticated) {
    // 미인증
}
```

<Info>
  최신 정보는 [GitHub 저장소](https://github.com/invokable/laravel-copilot-sdk)를 참고하세요.
</Info>


## Related topics

- [GitHub Actions - GitHub Copilot SDK for Laravel](/ko/packages/laravel-copilot-sdk/github-actions.md)
- [GitHub Copilot SDK for Laravel](/ko/packages/laravel-copilot-sdk/index.md)
- [GitHub 토큰](/ko/packages/laravel-copilot-sdk/github-token.md)
- [시작하기 - GitHub Copilot SDK for Laravel](/ko/packages/laravel-copilot-sdk/getting-started.md)
- [Laravel Cloud - GitHub Copilot SDK for Laravel](/ko/packages/laravel-copilot-sdk/laravel-cloud.md)
