Vercel Connect를 사용하면 장기 시크릿(secret)을 저장하지 않고도 앱과 에이전트가 Slack, GitHub 등 외부 서비스에 접근할 수 있습니다. 커넥터를 한 번만 등록해두면 런타임에 스코프가 지정된 단기 토큰을 요청하는 방식으로 동작합니다. 현재 퍼블릭 베타로 제공됩니다.
에이전트가 실제로 유용하려면 필요한 도구, 데이터, 서비스에 접근할 수 있어야 합니다. 에이전트가 여러 시스템에 걸쳐 더 깊은 작업을 수행할수록, 해당 접근을 인증하고 인가하는 방식이 애플리케이션 아키텍처의 핵심 과제가 됩니다.
현재 대부분의 에이전트 접근 방식은 환경 변수에 저장된 장기 프로바이더 토큰에 의존합니다. 에이전트가 필요로 할 수 있는 모든 권한을 미리 부여해두는 방식이죠. 이 토큰은 모든 사용자가 공유하고, 만료되지 않으며, 작업의 규모와 무관하게 에이전트에게 전방위적인 접근 권한을 부여합니다.
볼트(vault)를 사용하면 토큰을 훔치기 어렵게 만들 수 있습니다. 하지만 토큰 자체의 위험성은 줄어들지 않습니다. 진짜 문제는 토큰이 유출됐을 때 벌어지는 일입니다. 해당 토큰이 접근할 수 있는 모든 것이 그대로 노출됩니다.
이 문제를 해결하기 위해 Vercel Connect를 만들었습니다. 현재 퍼블릭 베타로 제공되는 Vercel Connect는 저장된 토큰 대신 런타임 자격 증명 교환 방식을 사용합니다. 커넥터를 한 번 등록해두면, 에이전트가 작업을 수행해야 할 때 앱이 Vercel Connect에 자신의 신원을 증명하고 해당 작업에 스코프가 지정된 단기 자격 증명을 발급받는 방식으로 동작합니다. 기존에 토큰으로 처리하던 모든 작업은 그대로 가능하며, 에이전트는 접근 권한을 보유하는 대신 매번 요청하는 방식으로 바뀝니다.
커넥터는 Vercel 팀과 Slack, GitHub 같은 프로바이더 사이를 연결하는 재사용 가능한 연결 단위입니다. 대시보드나 CLI에서 한 번 생성한 뒤, 프로젝트 수준의 접근 제어를 적용하면서 필요한 프로젝트와 환경에 연결할 수 있습니다.
프로바이더와의 연결 관계가 하나의 단일 엔티티로 관리되므로, 더 이상 수십 개의 환경 변수 패널에 분산된 정보를 일일이 찾아다닐 필요가 없습니다. 기존 방식에서는 토큰을 교체하려면 모든 복사본을 추적해야 했지만, 이제는 그럴 필요가 없습니다.
코딩 에이전트도 이 설정을 직접 실행할 수 있습니다. npx skills add vercel/vercel-plugin --skill vercel-connect로 vercel-connect 스킬을 설치하면 커넥터 생성과 연결을 대신 처리해줍니다.
커넥터가 설정되면, 에이전트는 실제 작업이 필요한 순간에만 자격 증명을 요청합니다. @vercel/connect SDK는 즉시 프로바이더 API에서 사용할 수 있는 토큰을 반환하며, 앱 내부에 프로바이더 시크릿(secret)이 남지 않습니다.
토큰의 유효 기간은 프로바이더에 따라 다르지만, SDK가 자동으로 갱신해주기 때문에 수동으로 시크릿을 교체할 필요가 없습니다. 그러면 한 가지 의문이 남습니다. 앱에 시크릿이 없다면, 무엇으로 요청 권한을 증명할까요?
증명 수단은 앱이 이미 보유한 신원입니다. Vercel의 모든 배포에는 OIDC 신원이 부여되며, 앱이나 에이전트가 토큰을 요청할 때 SDK가 이 신원을 Vercel Connect에 제출합니다. Vercel Connect는 신원을 검증하고, 해당 프로젝트와 환경이 커넥터를 사용할 권한이 있는지 확인한 뒤 프로바이더 자격 증명을 반환합니다. 이 일련의 과정이 바로 런타임 자격 증명 교환입니다.
동일한 신원은 vercel link와 vercel env pull를 통해 로컬 개발 환경에서도 사용할 수 있으며, Vercel 외부 환경에서는 SDK가 Vercel 액세스 토큰을 대신 사용합니다. 어느 방식이든 앱에 유출·커밋되거나 환경 간에 복사될 프로바이더 시크릿이 존재하지 않습니다.
단일 에이전트 내에서도 작업마다 필요한 접근 범위가 다를 수 있습니다. 한 단계에서는 저장소를 읽고, 다음 단계에서는 이슈를 생성하는 식이죠. 각 단계는 필요한 접근 권한만 정확히 요청하며, 요청 자체에 제한이 포함됩니다. 요청 시 다음 항목을 지정할 수 있습니다:
프로바이더 스코프
인스톨레이션 ID
리소스 제한
프로바이더별 인가 세부 정보
가장 명확한 예시는 GitHub입니다. 특정 저장소와 권한으로 토큰을 제한할 수 있기 때문입니다.
배포 에이전트는 해당 저장소 하나만 읽을 수 있고 그 외에는 아무것도 할 수 없습니다. 세분화된 GitHub App 인스톨도 좁은 범위로 설정할 수 있지만, 인스톨은 한 번 설정하면 그 이후로 계속 유지되는 상시 권한 부여입니다. 반면 이 제한은 단 하나의 요청, 단 하나의 작업에만 적용됩니다. 최소 권한 원칙이 요청의 형태 그 자체가 되는 것입니다.
공유 봇 토큰은 모든 사용자의 요청에 동일한 신원과 접근 범위를 부여합니다. Vercel Connect를 사용하면 이 신원을 직접 지정할 수 있습니다. subject를 앱에서 특정 사용자로 변경하면, 토큰은 해당 사용자가 인가한 범위 내에서 그 사용자를 대신해 동작합니다.
사용자가 처음 접근 권한을 부여할 때, startAuthorization는 콜백 URL, 웹훅, 또는 디바이스 코드를 통해 동의 흐름을 처리합니다. 이후부터 에이전트는 해당 사용자의 토큰을 요청합니다.
커넥터는 선택한 프로젝트와 환경에만 연결되므로, 개발·프리뷰·프로덕션 환경 각각에 별도 커넥터를 운용할 수 있습니다. 환경마다 고유한 인가 권한과 스코프를 가진 커넥터를 운용하면, 개발 환경에서 자격 증명이 노출되더라도 프로덕션에 재사용될 위험이 없습니다.
별도 커넥터를 사용하면 자격 증명이 유효한 범위를 제한할 수 있지만, 이미 발급된 접근 권한을 즉시 회수할 수는 없습니다. 바로 이 지점이 기존 방식에서 가장 번거로운 부분이었습니다. 저장된 토큰 방식에서는 새 시크릿을 발급하고, 기존 시크릿이 저장된 모든 위치를 업데이트하고, 의존하는 서비스를 전부 재배포해야 합니다. Vercel Connect에서는 커넥터의 토큰을 취소하기만 하면 됩니다. 본인 것만 취소하거나 전체를 취소할 수 있습니다.
취소의 실제 동작 방식은 프로바이더에 따라 다릅니다. 프로바이더가 취소를 지원하는 경우 Vercel Connect가 프로바이더 측에서도 토큰을 취소합니다. 지원하지 않는 경우에는 해당 권한 부여에 대한 신규 토큰 발급을 중단하며, 이미 발급된 토큰은 프로바이더에서 만료될 때까지 유효합니다. 이는 취소 API가 없는 프로바이더에 대한 실질적인 한계이며, 프로바이더가 토큰 유효 기간을 짧게 유지할수록 이 위험 구간도 줄어듭니다.
지금까지는 에이전트가 능동적으로 작업을 시작하는 방식을 다뤘습니다. 작업이 생기면 토큰을 요청하고 서비스를 호출하는 구조였죠. 트리거는 반대 방향으로 동작합니다. 연결된 서비스가 앱에 이벤트를 전송하고, 에이전트가 이에 반응합니다.
Vercel Connect는 프로바이더의 웹훅을 수신해 검증한 뒤 프로젝트로 전달합니다. 트리거 전달 기능은 현재 베타로 제공되며 Slack, GitHub, Linear를 지원합니다. Slack 커넥터는 검증된 웹훅을 최대 3개 프로젝트로 전달할 수 있어, Slack 메시지 하나로 에이전트를 깨워 동작시킬 수 있습니다.
이 전체 흐름은 앱에 프로바이더 시크릿이 전혀 없는 상태로 실행됩니다:
사용자가 Slack에 메시지를 올립니다.
Slack이 Vercel Connect로 이벤트를 전송합니다.
Vercel Connect는 보유한 Slack 서명 시크릿으로 이벤트를 검증한 뒤, OIDC 신원으로 재서명해 Vercel 앱으로 전달합니다.
앱은 이 증명을 검증한 뒤 스코프가 지정된 런타임 토큰을 요청합니다.
에이전트가 작업을 처리하고 응답합니다.
Slack 서명 시크릿이 사라지는 것이 아닙니다. 앱에서 서버 측인 Vercel Connect로 이동하는 것입니다. Vercel Connect가 업스트림 웹훅을 검증하고, 앱이 확인할 수 있는 신원으로 전달 요청을 재서명합니다. 앱에는 동작을 위한 봇 토큰도, 검증을 위한 서명 시크릿도 남지 않습니다.
모든 동작의 핵심은 단 하나의 호출입니다. 에이전트가 AI SDK 기반으로 만들어졌든, 백그라운드 작업으로 실행되든, 직접 작성한 루프로 동작하든, getToken을 사용해 동일한 방식으로 토큰을 요청합니다. 이 호출을 중심으로 기존 스택에 맞는 어댑터가 제공됩니다. Better Auth(@vercel/connect/betterauth)와 Auth.js(@vercel/connect/authjs)는 각자가 기대하는 형태로 프로바이더 설정을 받고, @vercel/connect/ai-sdk와 @vercel/connect/mcp는 AI SDK 도구와 MCP 클라이언트에 동일하게 적용됩니다. Nuxt 스타터는 GitHub와 Linear가 연결된 완성된 앱을 제공하며, 프로바이더 시크릿이나 데이터베이스에 저장된 OAuth 리프레시 토큰 없이 바로 개발을 시작할 수 있습니다.
프레임워크 수준에서는 연결 자체를 선언적으로 정의할 수도 있습니다. Vercel의 오픈소스 에이전트 프레임워크인 eve에서는 연결이 파일 하나로 정의되고, @vercel/connect/eve 어댑터가 해당 연결의 자격 증명을 제공합니다.
에이전트 코드에 토큰 처리 로직이 전혀 없는 이유는 connect이 동의 흐름, 갱신, 오류 처리를 eve에 매핑하기 때문입니다. OAuth를 지원하는 MCP 서버라면 URL 하나만으로 커넥터가 될 수 있으며, 이를 통해 mcp.linear.app도 Slack이나 GitHub와 동일한 스코프 기반 토큰 모델을 사용할 수 있습니다.
동일한 어댑터로 Slack 채널도 연결할 수 있습니다. connectSlackCredentials 호출 하나로 메시지 발송을 위한 봇 자격 증명과 수신을 위한 웹훅 검증 두 방향을 모두 처리합니다.
Slack 연동에 보통 환경 변수로 보관하던 두 시크릿, SLACK_BOT_TOKEN과 SLACK_SIGNING_SECRET이 앱에서 완전히 사라집니다. 프로비저닝하거나, 저장하거나, 교체해야 할 것이 하나도 남지 않습니다.
에이전트는 더 많은 곳에 접근할수록 더 유용해집니다. 그렇기 때문에 접근 방식을 올바르게 설계하는 것이 중요합니다. 에이전트가 접근할 수 있는 모든 시스템은 토큰이 유출될 경우 누군가 침투할 수 있는 경로가 됩니다. 런타임 자격 증명 교환 방식에서는 모든 것을 미리 프로비저닝하지 않습니다. 모든 사용자가 공유하지 않습니다. 영원히 유지되지 않습니다. 현재 작업의 범위를 넘어서지 않습니다.
자격 증명 관리는 한때 아키텍처 그 자체였습니다. 교체 스크립트, 환경 간에 복사되는 시크릿, 유출되지 않기를 바랄 수밖에 없는 광범위한 봇 토큰이 전부였죠. 이제는 아무것도 저장하지 않아도 됩니다. 에이전트가 필요한 순간, 해당 작업의 범위로 한정해 접근을 요청하면 됩니다.
지금 바로 Vercel Connect로 시작하세요
커넥터를 등록하고, 첫 번째 런타임 토큰을 요청하고, 프로바이더 시크릿 없이 에이전트를 Slack이나 GitHub에 연결해보세요.
코딩 에이전트는 프롬프트 하나면 충분합니다:
Vercel Connect란 무엇인가요?
Vercel Connect를 사용하면 에이전트와 서비스가 사용자와 팀을 대신해 외부 시스템에 접근할 수 있습니다. 장기 환경 변수에 프로바이더 자격 증명을 저장하는 대신, 프로젝트 수준의 접근 제어를 적용하면서 런타임에 사용자 인가 토큰을 요청하는 방식으로 동작합니다.
Vercel Connect는 어떤 문제를 해결하나요?
에이전트가 외부 API에서 계속 동작할 수 있도록 하면서도, 런타임 환경에서 장기 서드파티 시크릿을 제거합니다. 프로바이더용 커넥터를 등록하고 프로젝트와 환경에 연결한 뒤, 런타임에 프로바이더 토큰을 요청하는 방식으로 사용합니다.
Vercel Connect와 Integrations는 언제 각각 사용해야 하나요?
마켓플레이스 관리형 인스톨 및 Vercel Marketplace의 프로바이더 관리형 제품에는 Vercel Integrations를 사용하세요. 에이전트 워크플로에서 위임된 런타임 자격 증명과 사용자 인가가 필요한 경우, 예를 들어 에이전트가 Slack 워크스페이스에 프로젝트 스코프 접근이 필요한 경우에는 Vercel Connect를 사용하세요.
어떤 커넥터를 사용할 수 있나요?
Vercel Connect는 범용 OAuth 및 API 키 커넥터와 함께 Slack, GitHub, Linear, Discord, Notion, Salesforce, Figma, Snowflake 전용 커넥터를 지원합니다. Resend, Workday, Microsoft Teams 등은 곧 추가될 예정입니다.
요금 체계는 어떻게 되나요?
요금은 토큰 요청 횟수를 기준으로 책정됩니다. Hobby 플랜에서는 월 5,000건의 토큰 요청이 추가 비용 없이 제공됩니다. Pro 및 Enterprise 플랜에서는 10,000건당 3달러로 과금됩니다.
현재 베타의 제한 사항은 무엇인가요?
트리거 전달은 Slack, GitHub, Linear로 제한되며, 커넥터 브랜딩 필드는 한 번 설정하면 완전히 초기화할 수 없습니다. 또한 토큰 취소, 토큰 유효 기간, 스코프 세분화 수준은 프로바이더 지원 여부에 따라 달라집니다.