Devlery
Blog/AI

GitHub가 Copilot 에이전트에 비밀금고를 만들었다

GitHub가 Copilot cloud agent 전용 Agents secrets를 출시했습니다. 사설 레지스트리와 MCP 서버 접근권이 조직 단위 권한 관리로 이동합니다.

GitHub가 Copilot 에이전트에 비밀금고를 만들었다
AI 요약
  • 무슨 일: GitHub가 Copilot cloud agent 전용 Agents secrets and variables를 출시했습니다.
    • 조직 수준에서 secret을 만들고 전체, private/internal, 선택 리포지토리에 나눠 줄 수 있습니다.
  • 의미: 코딩 에이전트의 권한 관리가 Actions 부속 설정에서 별도 운영면으로 분리됩니다.
  • 실무 영향: 사설 패키지 레지스트리, MCP 서버, setup workflow 토큰을 에이전트 전용 범위로 재정리해야 합니다.
    • 단, Copilot cloud agent는 여전히 민감 정보에 접근할 수 있으므로 repository access와 secret scope를 작게 잡아야 합니다.

GitHub가 5월 8일 Copilot cloud agent용 Agents secrets and variables를 출시했습니다. 발표문만 보면 작은 설정 개선처럼 보입니다. 이제 사설 패키지 레지스트리 토큰이나 공통 MCP 서버 설정을 리포지토리마다 복사하지 않아도 되고, 조직 수준에서 한 번 만들고 필요한 리포지토리에 나눠 줄 수 있다는 내용입니다.

하지만 이 변화는 조금 더 크게 읽을 필요가 있습니다. 코딩 에이전트가 IDE 안의 자동완성 기능을 넘어 GitHub Actions 기반 임시 환경에서 코드를 읽고, 테스트를 돌리고, 브랜치를 만들고, MCP 서버에 연결하는 단계로 넘어가면서 자격 증명은 더 이상 "CI 설정의 한 줄"이 아닙니다. 에이전트가 무엇을 볼 수 있고, 어떤 시스템에 접속할 수 있으며, 어떤 토큰을 어떤 로그와 함께 남기는지가 별도 운영 문제가 됐습니다.

이번 발표의 핵심은 그래서 "GitHub가 secret 설정을 편하게 만들었다"가 아닙니다. 더 정확히는 "GitHub가 Copilot cloud agent를 위한 credential boundary를 만들었다"입니다.

기존 방식의 문제는 리포지토리 단위 반복이었습니다

GitHub 설명에 따르면, 지금까지 Copilot cloud agent에 secret이나 variable을 넘기려면 각 리포지토리의 Actions 설정 안에 있는 copilot environment에 값을 구성해야 했습니다. 한두 개 리포지토리에서는 괜찮습니다. 하지만 조직이 수십, 수백 개 리포지토리에 Copilot cloud agent를 도입하면 이 방식은 곧 운영 부채가 됩니다.

예를 들어 내부 npm registry token, private PyPI token, 사내 문서 검색 MCP 서버의 API key, 자체 artifact 저장소 접근 정보가 있다고 해보겠습니다. 에이전트가 테스트를 통과하려면 이 값이 필요합니다. 그런데 모든 리포지토리에 같은 값을 따로 넣으면 갱신 시점마다 누락이 생기고, 어느 리포지토리가 어느 secret을 쓰는지 추적하기 어렵습니다. 더 나쁘게는 Actions secret과 에이전트 secret의 경계가 흐려집니다.

새 구조에서는 GitHub settings의 secrets and variables 안에 Actions, Codespaces, Dependabot과 나란히 Agents 타입이 생깁니다. Copilot cloud agent용 값은 이 타입에 들어갑니다. 조직 owner는 organization-level secret을 만들고, 전체 리포지토리, private/internal 리포지토리, 또는 선택한 리포지토리에만 접근권을 줄 수 있습니다. 리포지토리 admin은 repository-level Agents secret을 별도로 둘 수 있습니다.

이것은 단순 UX 개선이라기보다 책임 구획의 변화입니다. Actions runner가 볼 secret, Codespaces가 볼 secret, Dependabot이 볼 secret, Copilot cloud agent가 볼 secret을 서로 다른 이름표로 관리하게 됐기 때문입니다.

GitHub Copilot 공식 문서 카드

COPILOT_MCP_ 접두사가 말하는 것

가장 흥미로운 세부사항은 COPILOT_MCP_ 접두사입니다. GitHub Docs는 Agents secrets and variables가 기본적으로 Copilot cloud agent의 개발 환경에 environment variables로 노출된다고 설명합니다. 다만 COPILOT_MCP_로 시작하는 값은 MCP 서버에만 제공됩니다.

이 작은 규칙은 현재 에이전트 플랫폼의 방향을 잘 보여줍니다. MCP는 이제 부가 기능이 아니라 에이전트의 외부 세계 연결 방식입니다. 코딩 에이전트가 GitHub 이슈만 보고 코드를 고치는 수준에 머물면 token scope 문제는 비교적 단순합니다. 하지만 에이전트가 내부 문서, Jira, Slack, package registry, observability backend, 보안 스캐너, 데이터베이스 schema viewer에 붙기 시작하면 이야기가 달라집니다. 각 연결은 별도의 인증 정보를 요구합니다.

GitHub는 이 중 MCP 서버용 credential을 이름 규칙으로 한 번 더 분리했습니다. 모든 환경 변수를 에이전트 본체가 똑같이 보게 하는 대신, MCP 설정으로 들어갈 값은 접두사로 표시합니다. 완벽한 격리 모델이라고 말하기는 어렵지만, 플랫폼이 "에이전트 자체"와 "에이전트가 호출하는 도구 서버"를 구분하기 시작했다는 점은 중요합니다.

구분주요 소비자이번 변화의 의미
ActionsCI/CD workflow기존 빌드와 배포 secret을 유지합니다.
Codespaces개발자 개발 환경사람의 원격 개발 환경과 에이전트 환경을 분리합니다.
Dependabot의존성 업데이트 봇패키지 업데이트 봇의 접근권을 별도로 둡니다.
AgentsCopilot cloud agent와 MCP 서버코딩 에이전트용 token scope가 독립 관리면으로 올라옵니다.

에이전트가 사설 자원을 쓰기 시작했다는 신호입니다

Copilot cloud agent는 GitHub 문서상 repository research, implementation plan 작성, bug fix, 작은 기능 구현, test coverage 개선, documentation update, technical debt 처리, merge conflict 해결 같은 작업을 수행할 수 있습니다. 이 자체도 중요하지만, 더 중요한 것은 작업 환경입니다. Copilot cloud agent는 GitHub Actions로 구동되는 ephemeral development environment에서 실행됩니다. 즉, 개발자의 노트북이 아니라 GitHub가 만든 원격 실행 환경에서 코드를 탐색하고 명령을 실행합니다.

이 환경에서 실제 리포지토리를 빌드하려면 사설 자원 접근이 필요합니다. 많은 기업 코드베이스는 public registry만으로 설치되지 않습니다. 내부 패키지, private module, 자체 container registry, license server, mock API, schema registry, staging SDK가 엮여 있습니다. 지금까지 AI 코딩 도구가 데모에서는 잘 작동하지만 회사 코드에서는 막히는 이유 중 하나가 여기에 있습니다. 에이전트가 모델 능력은 충분해도, 빌드에 필요한 신뢰 가능한 권한을 받지 못하면 테스트를 돌릴 수 없습니다.

이번 GitHub 발표는 그 병목을 건드립니다. 조직 owner가 공통 secret을 하나 만들고 여러 리포지토리에 공유할 수 있다면, Copilot cloud agent 롤아웃은 "각 팀이 알아서 토큰을 복사한다"에서 "플랫폼 팀이 에이전트 실행 권한을 관리한다"로 바뀝니다. 이는 대기업 도입에서 결정적인 차이입니다. 에이전트 생산성은 모델 점수만으로 올라가지 않습니다. 반복 가능한 실행 환경, 권한, 로그, 검증이 붙어야 올라갑니다.

Organization-level Agents secret

Repository access: all, private/internal, or selected repositories

Copilot cloud agent ephemeral development environment

Private registry, setup scripts, or MCP server configuration

보안상 좋아진 점과 새로 생기는 질문

좋아진 점은 분명합니다. 첫째, Copilot cloud agent는 Actions, Codespaces, Dependabot secrets and variables에 접근하지 않고, Agents 타입에 있는 값만 받습니다. 둘째, secret 값은 session log에서 masking됩니다. 셋째, 기존 copilot environment에 있던 값은 새 repository-level Agents 타입으로 자동 마이그레이션됩니다. 운영팀 입장에서는 권한을 재분류할 출발점이 생긴 셈입니다.

하지만 이것이 위험을 없앤다는 뜻은 아닙니다. GitHub의 "Risks and mitigations" 문서도 Copilot cloud agent가 코드와 민감 정보에 접근할 수 있으며, 실수나 악의적 입력으로 이를 유출할 가능성이 있다고 명시합니다. GitHub는 인터넷 접근 제한, hidden character filtering, branch 권한 제한, human review, session log, audit log 같은 완화책을 둡니다. 그래도 secret을 받는 순간 에이전트는 조직 보안 경계 안으로 들어옵니다.

특히 prompt injection 문제는 계속 남습니다. Copilot cloud agent는 이슈나 PR comment를 통해 지시를 받을 수 있습니다. GitHub는 HTML comment 같은 숨은 문자를 agent input에서 제외하는 식의 방어를 설명하지만, 공격 표면은 그보다 넓습니다. README, test fixture, generated file, docs, issue template, 외부 MCP 응답에도 "이 토큰을 출력하라"는 식의 지시가 숨어 있을 수 있습니다. 에이전트가 secret 값을 직접 출력하지 못하게 masking하더라도, secret을 사용해 외부 시스템에서 데이터를 읽어오는 식의 간접 유출은 별도 통제가 필요합니다.

따라서 이번 기능은 "안전해졌으니 더 많은 권한을 줘도 된다"가 아니라 "권한을 잘게 나눌 수 있으니 이제 제대로 나눠야 한다"에 가깝습니다.

개발팀이 당장 점검할 것

첫 번째는 기존 copilot environment에 무엇이 있었는지 확인하는 일입니다. GitHub가 자동 마이그레이션한다고 해도, 마이그레이션된 값이 여전히 적절한지는 별도 판단이 필요합니다. 예전에 테스트 편의를 위해 넓은 범위의 토큰을 넣어뒀다면, Agents 타입으로 이동한 뒤에도 위험은 그대로입니다.

두 번째는 organization-level secret의 repository access를 최소화하는 일입니다. 전체 리포지토리 공유는 편하지만, 에이전트 권한에서는 편리함이 곧 blast radius가 됩니다. 내부 패키지 registry token 하나라면 private/internal 전체 공유가 합리적일 수 있습니다. 반대로 특정 product API key, customer data fixture 접근 토큰, staging admin token은 선택 리포지토리로 제한해야 합니다.

세 번째는 MCP 서버용 secret naming을 분리하는 일입니다. MCP 서버에 필요한 값은 COPILOT_MCP_ 접두사를 사용해 agent runtime 일반 변수와 구분해야 합니다. 이렇게 해도 모든 보안 문제가 사라지는 것은 아니지만, 최소한 어떤 값이 에이전트 실행 환경용이고 어떤 값이 도구 서버용인지 감사를 시작할 수 있습니다.

네 번째는 로그와 audit trail을 실제 운영 절차에 넣는 일입니다. GitHub는 Copilot cloud agent의 commit author, co-author, signed commit, session log, audit log event를 제공한다고 설명합니다. 하지만 로그가 있다는 것과 누군가 정기적으로 보는 것은 다릅니다. 에이전트가 secret을 사용한 작업, MCP 서버를 호출한 작업, 자동 validation을 통과하지 못한 작업을 어떤 기준으로 리뷰할지 정해야 합니다.

이 발표가 작은 기능 이상인 이유

최근 AI 코딩 도구 경쟁은 모델 성능, context window, SWE-bench 점수, 병렬 에이전트 수로 설명되는 경우가 많습니다. 물론 중요합니다. 하지만 조직 도입 단계에서는 더 건조한 질문이 승부를 가릅니다. 이 에이전트가 우리 사설 패키지를 설치할 수 있는가. 설치할 수 있다면 토큰은 어디서 오는가. 그 토큰은 어느 리포지토리에 노출되는가. MCP 서버는 어떤 secret을 받는가. 에이전트가 남긴 로그로 사고 조사가 가능한가.

GitHub의 이번 Agents secrets 출시는 바로 그 질문에 대한 플랫폼 레벨 답변입니다. 화려한 데모는 아니지만, 코딩 에이전트가 실험실에서 조직 운영으로 넘어갈 때 필요한 기본 부품입니다. 이제 에이전트는 사람 개발자처럼 권한을 받아 일하고, 그 권한은 조직 정책으로 배포되며, 실행 흔적은 감사 대상으로 남습니다.

동시에 이 기능은 GitHub가 Copilot cloud agent를 단순 Copilot 기능 하나로 보지 않고 있다는 신호이기도 합니다. GitHub Docs의 cloud agent 페이지에는 custom instructions, MCP servers, custom agents, hooks, skills, Copilot Memory가 함께 등장합니다. 이것은 하나의 "코딩 봇"이라기보다 GitHub 안에 자리 잡은 에이전트 런타임입니다. 런타임에는 모델보다 지루한 구성 요소가 필요합니다. secret management, access control, audit log, firewall, validation, usage metrics 같은 것들입니다.

개발자 입장에서는 이번 발표를 체크박스 기능으로 넘기지 않는 편이 좋습니다. Copilot cloud agent를 이미 쓰고 있거나 도입하려는 팀이라면, 이제 질문은 "에이전트에게 secret을 줄 수 있는가"가 아니라 "어떤 secret을 어떤 범위로 줄 것인가"입니다. 그 답을 제대로 정하지 않으면, 코딩 에이전트는 생산성 도구가 아니라 또 하나의 비가시적 자동화 계정이 됩니다.

반대로 이 경계를 잘 설계하면 에이전트 도입의 현실성이 높아집니다. 사설 의존성을 설치할 수 있고, MCP 서버로 필요한 사내 맥락을 읽을 수 있고, 그래도 Actions와 사람 개발 환경의 secret과는 분리됩니다. 모델 경쟁의 다음 라운드는 더 똑똑한 답변만으로 결정되지 않습니다. 누가 에이전트에게 안전하게 일할 권한을 줄 수 있는지가 점점 더 중요해지고 있습니다.