Sources:
vercel/vercel#15763 (most recent comment 2026-04-12)
vercel/vercel#15415
vercel/vercel#16111 (filed 2026-04-27, 2 days ago)
Pain
vercel env add NAME preview --value X --yes (and stdin piped variants) fail with action_required / git_branch_required in every flag combination, in CLI v50.23.0 through v50.44.0+. Fix is merged on main (#15840 commit 32f335250) but not yet in any released CLI version. CI pipelines and agents are blocked.
The REST API workaround works perfectly:
POST https://api.vercel.com/v10/projects/$PROJECT_ID/env?teamId=$TEAM_ID&upsert=true
{ "key": ..., "value": ..., "type": "encrypted", "target": ["preview"] }(no gitBranch field = applies to all preview branches — exactly what --yes was supposed to do)
Our solution
Detect avercel env add NAME preview ... (or avercel env add NAME ) without explicit branch arg, and:
Read .vercel/project.json for projectId + teamId
Read $VERCEL_TOKEN from env (fail loud if missing, with link to /account/tokens)
POST to REST API with target: ["preview"] and no gitBranch
Print avercel: bypassed CLI bug #15763 via REST API (set NAME for all preview branches)
When the upstream fix lands in CLI, gate the bypass behind a version check (or a config flag avercel.workaroundVercelBugs: true).
This becomes a killer 'why use avercel' bullet: 'CI pipelines that work today, even with broken upstream CLI versions.'
DoD
[ ] REST API client for env add (POST + upsert + target array)
[ ] Auto-detect preview target without branch
[ ] Token loading from $VERCEL_TOKEN with helpful error
[ ] Tests with mocked HTTPS
[ ] README section: 'Bug bypasses' with version range
Migrated from NEBULA-92 | Parent: NEBULA-18 | Original status: To Do
Sources:
vercel/vercel#15763 (most recent comment 2026-04-12)
vercel/vercel#15415
vercel/vercel#16111 (filed 2026-04-27, 2 days ago)
Pain
vercel env add NAME preview --value X --yes (and stdin piped variants) fail with action_required / git_branch_required in every flag combination, in CLI v50.23.0 through v50.44.0+. Fix is merged on main (#15840 commit 32f335250) but not yet in any released CLI version. CI pipelines and agents are blocked.
The REST API workaround works perfectly:
POST https://api.vercel.com/v10/projects/$PROJECT_ID/env?teamId=$TEAM_ID&upsert=true
{ "key": ..., "value": ..., "type": "encrypted", "target": ["preview"] }(no gitBranch field = applies to all preview branches — exactly what --yes was supposed to do)
Our solution
Detect avercel env add NAME preview ... (or avercel env add NAME ) without explicit branch arg, and:
Read .vercel/project.json for projectId + teamId
Read $VERCEL_TOKEN from env (fail loud if missing, with link to /account/tokens)
POST to REST API with target: ["preview"] and no gitBranch
Print avercel: bypassed CLI bug #15763 via REST API (set NAME for all preview branches)
When the upstream fix lands in CLI, gate the bypass behind a version check (or a config flag avercel.workaroundVercelBugs: true).
This becomes a killer 'why use avercel' bullet: 'CI pipelines that work today, even with broken upstream CLI versions.'
DoD
[ ] REST API client for env add (POST + upsert + target array)
[ ] Auto-detect preview target without branch
[ ] Token loading from $VERCEL_TOKEN with helpful error
[ ] Tests with mocked HTTPS
[ ] README section: 'Bug bypasses' with version range
Migrated from NEBULA-92 | Parent: NEBULA-18 | Original status: To Do