cd /news/developer-tools/breaking-vercel-permissions-can-now-… · home › topics › developer-tools › article
[ARTICLE · art-153319] src=driftwatch.et ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Vercel: permissions can now return "use:github"

Vercel added "use:github" as a new value to the permissions array on UserEvent objects, reachable from one Vercel operation, according to the company's API change notice. Vercel called the change additive, but it breaks exhaustive switches, strict parsers and generated client enums that read payload.permissions[]. Code consuming Vercel's UserEvent objects must handle the new value, which joins existing entries such as "use:ai-gateway" and "read:user".

read2 min views1 publishedOct 19, 2026

What changed #

Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.

Affects payload.permissions[] on UserEvent reachable from 1 operation.

New value: use:github.

can now return "use:github"

Who is affected #

Code that reads Vercel's UserEvent objects, used by 1 Vercel operation.

Before and after #

Where Before After
UserEvent.payload.permissions[] "*", "manage:speed-insights", "manage:web-analytics", "read-write:access-group", "read-write:ai-gateway-api-key", "read-write:ai-gateway-budgets", "read-write:ai-gateway-guardrails", "read-write:ai-gateway-private-models", "read-write:ai-gateway-rules", "read-write:ai-gateway-virtual-model-configs", "read-write:alerts", "read-write:automations", "read-write:billing", "read-write:blob", "read-write:connect", "read-write:deployment", "read-write:domain", "read-write:domain-registrar", "read-write:drains", "read-write:edge-cache", "read-write:edge-config", "read-write:firewall", "read-write:integration-configuration", "read-write:integration-resource", "read-write:kms", "read-write:messageboard", "read-write:project", "read-write:project-env-vars", "read-write:project-env-vars-non-production", "read-write:project-env-vars-production", "read-write:project-flags-non-production", "read-write:project-flags-production", "read-write:project-members", "read-write:project-protection-bypass", "read-write:project-trusted-sources", "read-write:remote-cache", "read-write:sandbox", "read-write:schedule", "read-write:team-members", "read-write:vcr", "read:access-group", "read:ai-gateway-budgets", "read:ai-gateway-guardrails", "read:ai-gateway-private-models", "read:ai-gateway-rules", "read:ai-gateway-virtual-model-configs", "read:alerts", "read:audit-log", "read:automations", "read:billing", "read:connect", "read:deployment", "read:domain", "read:event", "read:firewall", "read:integration-configuration", "read:integration-resource", "read:kms", "read:messageboard", "read:monitoring", "read:project", "read:project-env-vars-non-production", "read:project-env-vars-production", "read:project-flags", "read:project-members", "read:project-trusted-sources", "read:remote-cache", "read:sandbox", "read:schedule", "read:speed-insights", "read:team", "read:user", "read:vcr", "read:web-analytics", "read:webhooks", "use:ai-gateway" "*", "manage:speed-insights", "manage:web-analytics", "read-write:access-group", "read-write:ai-gateway-api-key", "read-write:ai-gateway-budgets", "read-write:ai-gateway-guardrails", "read-write:ai-gateway-private-models", "read-write:ai-gateway-rules", "read-write:ai-gateway-virtual-model-configs", "read-write:alerts", "read-write:automations", "read-write:billing", "read-write:blob", "read-write:connect", "read-write:deployment", "read-write:domain", "read-write:domain-registrar", "read-write:drains", "read-write:edge-cache", "read-write:edge-config", "read-write:firewall", "read-write:integration-configuration", "read-write:integration-resource", "read-write:kms", "read-write:messageboard", "read-write:project", "read-write:project-env-vars", "read-write:project-env-vars-non-production", "read-write:project-env-vars-production", "read-write:project-flags-non-production", "read-write:project-flags-production", "read-write:project-members", "read-write:project-protection-bypass", "read-write:project-trusted-sources", "read-write:remote-cache", "read-write:sandbox", "read-write:schedule", "read-write:team-members", "read-write:vcr", "read:access-group", "read:ai-gateway-budgets", "read:ai-gateway-guardrails", "read:ai-gateway-private-models", "read:ai-gateway-rules", "read:ai-gateway-virtual-model-configs", "read:alerts", "read:audit-log", "read:automations", "read:billing", "read:connect", "read:deployment", "read:domain", "read:event", "read:firewall", "read:integration-configuration", "read:integration-resource", "read:kms", "read:messageboard", "read:monitoring", "read:project", "read:project-env-vars-non-production", "read:project-env-vars-production", "read:project-flags", "read:project-members", "read:project-trusted-sources", "read:remote-cache", "read:sandbox", "read:schedule", "read:speed-insights", "read:team", "read:user", "read:vcr", "read:web-analytics", "read:webhooks", "use:ai-gateway", "use:github"
UserEvent.payload.nextPermissions[] "*", "manage:speed-insights", "manage:web-analytics", "read-write:access-group", "read-write:ai-gateway-api-key", "read-write:ai-gateway-budgets", "read-write:ai-gateway-guardrails", "read-write:ai-gateway-private-models", "read-write:ai-gateway-rules", "read-write:ai-gateway-virtual-model-configs", "read-write:alerts", "read-write:automations", "read-write:billing", "read-write:blob", "read-write:connect", "read-write:deployment", "read-write:domain", "read-write:domain-registrar", "read-write:drains", "read-write:edge-cache", "read-write:edge-config", "read-write:firewall", "read-write:integration-configuration", "read-write:integration-resource", "read-write:kms", "read-write:messageboard", "read-write:project", "read-write:project-env-vars", "read-write:project-env-vars-non-production", "read-write:project-env-vars-production", "read-write:project-flags-non-production", "read-write:project-flags-production", "read-write:project-members", "read-write:project-protection-bypass", "read-write:project-trusted-sources", "read-write:remote-cache", "read-write:sandbox", "read-write:schedule", "read-write:team-members", "read-write:vcr", "read:access-group", "read:ai-gateway-budgets", "read:ai-gateway-guardrails", "read:ai-gateway-private-models", "read:ai-gateway-rules", "read:ai-gateway-virtual-model-configs", "read:alerts", "read:audit-log", "read:automations", "read:billing", "read:connect", "read:deployment", "read:domain", "read:event", "read:firewall", "read:integration-configuration", "read:integration-resource", "read:kms", "read:messageboard", "read:monitoring", "read:project", "read:project-env-vars-non-production", "read:project-env-vars-production", "read:project-flags", "read:project-members", "read:project-trusted-sources", "read:remote-cache", "read:sandbox", "read:schedule", "read:speed-insights", "read:team", "read:user", "read:vcr", "read:web-analytics", "read:webhooks", "use:ai-gateway" "*", "manage:speed-insights", "manage:web-analytics", "read-write:access-group", "read-write:ai-gateway-api-key", "read-write:ai-gateway-budgets", "read-write:ai-gateway-guardrails", "read-write:ai-gateway-private-models", "read-write:ai-gateway-rules", "read-write:ai-gateway-virtual-model-configs", "read-write:alerts", "read-write:automations", "read-write:billing", "read-write:blob", "read-write:connect", "read-write:deployment", "read-write:domain", "read-write:domain-registrar", "read-write:drains", "read-write:edge-cache", "read-write:edge-config", "read-write:firewall", "read-write:integration-configuration", "read-write:integration-resource", "read-write:kms", "read-write:messageboard", "read-write:project", "read-write:project-env-vars", "read-write:project-env-vars-non-production", "read-write:project-env-vars-production", "read-write:project-flags-non-production", "read-write:project-flags-production", "read-write:project-members", "read-write:project-protection-bypass", "read-write:project-trusted-sources", "read-write:remote-cache", "read-write:sandbox", "read-write:schedule", "read-write:team-members", "read-write:vcr", "read:access-group", "read:ai-gateway-budgets", "read:ai-gateway-guardrails", "read:ai-gateway-private-models", "read:ai-gateway-rules", "read:ai-gateway-virtual-model-configs", "read:alerts", "read:audit-log", "read:automations", "read:billing", "read:connect", "read:deployment", "read:domain", "read:event", "read:firewall", "read:integration-configuration", "read:integration-resource", "read:kms", "read:messageboard", "read:monitoring", "read:project", "read:project-env-vars-non-production", "read:project-env-vars-production", "read:project-flags", "read:project-members", "read:project-trusted-sources", "read:remote-cache", "read:sandbox", "read:schedule", "read:speed-insights", "read:team", "read:user", "read:vcr", "read:web-analytics", "read:webhooks", "use:ai-gateway", "use:github"

Code that breaks #

switch (response.payload.permissions[0]) {
  // existing branches …
  // no branch for "use:github"
  default:
    throw new Error("unexpected permissions");
}

Based on Vercel’s published API specification. How severity is decided.

── more in #developer-tools 4 stories · sorted by recency
── more on @vercel 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/breaking-vercel-perm…] indexed:0 read:2min 2026-10-19 · —