리포지토리에서 .github/github-app.yml를 사용하여 해당 프로젝트에 대해 GitHub Copilot app가 어떻게 동작해야 하는지 정의할 수 있습니다.
앱 UI에서 이러한 프로젝트 설정을 편집할 수도 있습니다.
.github/github-app.yml가 이미 있는 경우 UI 변경 내용이 해당 파일에 다시 기록됩니다. 아직 존재하지 않는 경우 앱의 현재 프로젝트 설정에서 만들 수 있습니다.
구성 파일 위치
다음 위치에 파일을 만듭니다:
.github/github-app.yml
.github/github-app.yml
앱은 이전 버전과의 호환성을 위해 레거시 파일 이름 .github/copilot-desktop.yml 도 지원합니다.
UI 기반 사용자 지정 단계는 GitHub Copilot 앱 사용자 지정을 참조하세요.
구성을 검토하고 신뢰하기
앱이 리포지토리에서 구성을 감지하는 경우 구성을 검토하고 수락할 때까지 파일의 리포지토리 지침, 스크립트 또는 기타 설정을 적용하지 않습니다. 이렇게 하면 다른 참가자가 추가한 명령을 실행하거나 설정을 적용하지 않도록 보호합니다. 앱 UI를 통해 만들거나 업데이트하는 구성은 자동으로 신뢰됩니다.
경고
리포지토리 구성을 수락하기 전에 구성된 모든 명령과 해당 명령이 실행하는 종속성을 검토합니다. 스크립트와 해당 자식 프로세스는 이 문서의 뒷부분에 GitHub 설명된 자격 증명을 수신하므로 이러한 환경 변수를 기록하거나 유지하도록 구성하지 마세요.
공백 또는 주석 변경 내용을 포함하여 파일이 앱 외부에서 변경되는 경우 앱이 적용되기 전에 업데이트된 구성을 검토하고 수락해야 합니다. 현재 버전을 수락할 때까지 앱은 이전에 앱에서 구성한 프로젝트 설정을 계속 사용합니다.
구성 예
instructions: |
Use bun instead of npm.
scripts:
- name: Setup
command: bun install
triggers:
- session.create
- name: Run
command: bun run dev
- name: Archive cleanup
command: rm -rf node_modules
triggers:
- session.archive
server_ready_pattern: '(?i)Local:\s+(https?://\S+)'
auto_open_in_browser: true
automation:
auto_issue_session: true
remote_control: false
instructions: |
Use bun instead of npm.
scripts:
- name: Setup
command: bun install
triggers:
- session.create
- name: Run
command: bun run dev
- name: Archive cleanup
command: rm -rf node_modules
triggers:
- session.archive
server_ready_pattern: '(?i)Local:\s+(https?://\S+)'
auto_open_in_browser: true
automation:
auto_issue_session: true
remote_control: false
지침 및 스크립트 구성
instructions
instructions을 사용하여 프로젝트 세션의 시스템 프롬프트에 리포지토리 관련 지침을 추가합니다. 또한 앱에서 전역 지침을 구성하는 경우 전역 지침이 먼저 적용된 다음 프로젝트 지침이 적용됩니다.
scripts
앱에 표시되고 수동으로 또는 특정 트리거에서 실행할 수 있는 명령을 정의하는 데 사용합니다 scripts .
각 스크립트 항목은 다음을 지원합니다.
name(string): UI에 표시되는 이름입니다.command(string): 실행할 명령입니다.triggers(string[]선택 사항): 스크립트를 자동으로 실행하는 이벤트입니다.
triggers가 없는 스크립트는 수동입니다.
트리거 값
파일에서 정식 트리거 값을 사용하세요:
session.createsession.archive
또한 앱은 기존 파일을 구문 분석할 때 다음과 같은 레거시 별칭을 허용합니다.
workspace.create(별칭:session.create)workspace.archive(별칭:session.archive)
트리거된 스크립트가 실행되면 COPILOT_SCRIPT_TRIGGER이 정규 값으로 설정됩니다.
session.createsession.archive
서버 감지 및 브라우저 동작 구성
server_ready_pattern
server_ready_pattern 는 실행 스크립트가 서버를 시작했는지 감지하는 데 사용되는 정규식입니다.
패턴은 Rust의 regex 크레이트에서 지원하는 구문을 사용합니다. 구문 세부 정보는 크레이트 문서의 구문을 참조하세요. 패턴이 잘못된 경우 앱은 기본 서버 검색 패턴을 사용합니다.
검색된 URL 또는 포트에 대해 첫 번째 캡처 그룹을 사용합니다. 앱은 캡처 그룹 1로 표시됩니다.
- 캡처가 URL(
http://...또는https://...)인 경우 URL이 사용됩니다. - 캡처가 포트 번호(예:
3000)인 경우 앱은 이를http://localhost:3000로 변환합니다.
auto_open_in_browser
auto_open_in_browser가 true인 경우 앱은 통합 브라우저에서 검색된 실행 URL을 엽니다. 이 필드를 생략하면 유효 기본값은 true입니다.
자동화 동작 구성
automation 아래에서 자동화 옵션을 설정합니다:
automation.auto_issue_session(boolean) 앱이 문제 컨텍스트를 사용하여 세션을 자동으로 시작하는지 여부를 제어합니다. 생략하면 유효한 기본값은true입니다.automation.remote_control(boolean) 세션이 GitHub 웹 인터페이스 또는 GitHub Mobile에서 액세스될 수 있는지 여부를 제어합니다. 생략하면 유효한 기본값은false입니다.
Copilot 라이선스 좌석이 조직에서 제공된 경우 원격 제어를 사용할 수 있도록 해당 "클라우드에 로컬 세션 저장" 정책을 "보기 및 제어"로 설정해야 합니다. 엔터프라이즈 관리 remoteControl 설정은 automation.remote_control가 true인 경우에도 원격 제어를 추가로 제한할 수 있습니다. 자세한 내용은 세션의 GitHub Copilot CLI 원격 제어 및 엔터프라이즈 관리 설정을(를) 참조하세요.
스크립트에 대한 런타임 환경 변수
스크립트는 앱에서 제공하는 환경 변수와 함께 실행됩니다.
| Variable | Description |
|---|---|
COPILOT_WORKSPACE_ | 현재 작업 영역 이름입니다. |
COPILOT_WORKSPACE_ | 작업 영역의 절대 경로입니다. |
COPILOT_ROOT_PATH | 프로젝트 루트 체크아웃의 절대 경로입니다. |
COPILOT_DEFAULT_ | 프로젝트 기본 브랜치. |
COPILOT_PORT | 현재 작업 영역 컨텍스트에 대한 App WebSocket 포트입니다. |
COPILOT_SCRIPT_ | 스크립트를 시작한 트리거(트리거된 스크립트에 대해서만 설정됨). |
GH_TOKEN | 선택한 GitHub 계정에 대한 토큰입니다. |
GH_HOST | 선택한 GitHub 계정의 호스트 |
COPILOT_GH_ACCOUNT_ | 선택한 계정을 포함하여 로그인한 모든 계정에 대한 호스트 및 계정별 토큰입니다. |
각 COPILOT_GH_ACCOUNT_* 변수에 대해 앱은 호스트 및 로그인을 소문자로 만들고, ASCII 문자와 숫자를 변경하지 않고, 다른 모든 UTF-8 바이트를 밑줄로 둘러싸인 대문자 16진수 값으로 바꿉니다. 변수 이름은 형식 COPILOT_GH_ACCOUNT_<HOST>_<LOGIN>을 사용합니다. 예를 들어 github.com에서의 alice 토큰은 COPILOT_GH_ACCOUNT_github_2E_com_alice이고, ghe-example.com에서의 user 토큰은 COPILOT_GH_ACCOUNT_ghe_2D_example_2E_com_user입니다.
레거시 호환성
이전 버전과의 호환성을 위해 앱은 이전 개체 기반 scripts 셰이프를 파싱할 수 있습니다.
scripts: setup: bun install run: bun run dev archive: rm -rf node_modules
scripts:
setup: bun install
run: bun run dev
archive: rm -rf node_modules
이 레거시 셰이프에서:
setup는 만들기 트리거가 있는 스크립트에 매핑됩니다.archive는 보관 트리거가 있는 스크립트에 매핑됩니다.run는 수동 스크립트 항목에 매핑되며 단일 명령 문자열 또는{ name, command }개체 목록일 수 있습니다.