The “Ask for More” Button Is an Intake Queue: Budget Requests With a Revert Date
Copilot budget increase requests are GA, and nothing in the docs reverts an approval. Run budget requests as a queue with required fields and a revert date.
Go deeper. Build your own.
A member hits their Copilot AI-credit limit at 4:40 on a Thursday and asks for more. An owner types an amount, selects “Approve and increase”, and the member is back at work before the owner has closed the tab. GitHub says the approval “updates the member’s budget to the amount you set.” Nothing in its docs says that number ever comes back down.
Budget requests are now a button at GitHub, Anthropic and OpenAI, and Cursor just handed teams ten days of Rollouts credits that set up the next wave. Only OpenAI says what an approval leaves behind: “Approval creates a user override.” No vendor documents an automatic revert. Each click that fixes one blocked afternoon can become next quarter’s baseline unless someone lowers it on purpose.
So treat the button as the front door of an intake queue. By Tuesday, every request lands in one place with five required fields: the lane, the job, which meter was hit, cost per completed task, and whether the ask is one-time or standing. The queue auto-denies any lane with an open cost anomaly. It approves with a revert date and a job that lowers the budget back, answers within a written SLA, and counts requests, approvals and reverts per lane every week.
Sep 16: budget requests become a button at GitHub
GitHub’s changelog of Sep 16, 2026 made Copilot budget increase requests generally available. The before state, in GitHub’s words: “Previously, when a member used all the Copilot AI credits available to them, they were blocked from Copilot features that consume credits.” Now a blocked member can request more budget the moment they hit the limit, and “Requests automatically route to whichever account pays for the budget”, so an org-owned budget’s requests appear in organization settings and an enterprise-owned budget’s in enterprise settings.
Screenshot: GitHub Changelog, “Copilot budget increase requests are generally available” (Sep 16, 2026), captured Sep 28, 2026.
Organization owners, enterprise owners and billing managers review them under “Requests from members”, set a new amount for each, and select “Approve and increase”. “This feature is available with the GitHub Copilot Business and GitHub Copilot Enterprise plans under usage-based billing. This feature is not available for enterprises with managed users.”
The docs on managing requests say approving “sets the member’s budget to the amount you entered”, and they are silent on whether that amount carries into later billing periods, on notifying the requester, and on any cap for approvals. GitHub never calls it a standing raise, and nothing in its docs reverts it either. One more line from the budgets docs explains why requests will keep coming: “A user-level budget can block a user even when the enterprise or cost center budget still has capacity.”
GitHub is the newest button, not the first. Anthropic’s Claude Code cost docs describe /usage-credits for a Team or Enterprise member without billing access: it “Asks you to confirm, then sends a request to your organization’s admins.” That flow existed by July 2026 (v2.1.211). On claude.ai, seat-based Enterprise members who hit their included limit get a “Request usage credits” link that asks admins to move them to a Premium seat or turn on usage credits, and admins answer with “Increase limit” in Organization settings > Usage, per the help center; what that increase sets, and whether it persists, the page doesn’t say.
OpenAI’s ChatGPT Work admin FAQ is the only page that names the ratchet. For eligible Enterprise and Edu workspaces: “If requests are enabled, users can request a higher monthly limit. Approval creates a user override.” Users “can’t change assigned limits”, and the FAQ doesn’t say whether an override ever expires.
Screenshot: ChatGPT Learn, “ChatGPT Work admin FAQ” (undated page), captured Sep 28, 2026.
Then Cursor: its Sep 23 changelog made Rollouts and Security Reviewer available on Teams and Enterprise, with a trial: “For the next 10 days, we’re including usage credits so teams can try Rollouts on real changes.” That’s roughly 50 changes on Teams and 500 on Enterprise, for Rollouts only. The page names no price after the credits and no request flow. Ten days from Sep 23 is about Oct 3, by our arithmetic, and any team that liked the trial will need a budget line soon after.
| Button | Who asks | Who approves | What approval does | Documented revert |
|---|---|---|---|---|
| GitHub Copilot, Business and Enterprise on usage-based billing | A member blocked at their AI-credit limit | Organization owner, enterprise owner or billing manager | “updates the member’s budget to the amount you set” | None; docs silent on later billing periods |
Claude Code /usage-credits, Team and Enterprise |
A member without billing access, from an interactive session | The organization’s admins | The admin raises the named limit in Admin settings > Usage | None stated |
| claude.ai, seat-based Enterprise | A member at their included limit | Owners, Primary Owners, custom roles with billing rights | An increase; what it sets is not stated | None stated |
| ChatGPT Work, Enterprise and Edu | A user, if requests are enabled | Admins | “Approval creates a user override” | None; users can’t change assigned limits |
| Cursor Rollouts, Teams and Enterprise | No request flow on the launch page | Not described | 10 days of credits from Sep 23 | Credits end; no price stated |
Agent lanes turn a monthly budget into a rate
A person on a budget slows down near the limit. An agent lane doesn’t know where the limit is until it hits it, usually mid-job, and a user-level budget can stop it while the org still has money. So requests arrive at the worst moment: a person blocked, an agent idle, and an approver holding a button that fixes it in one click. The pressure to approve peaks exactly when the approver knows least about why the lane burned through its budget.
Headless lanes can’t even ask. Claude Code’s docs say that “in non-interactive mode with the -p flag and from Remote Control, the command sends no request and tells you to run it in an interactive session instead.” Every request comes from a person at a terminal, on behalf of a lane the approver can’t see. The queue’s job is to make that lane visible.
Step 1: Route every button into one queue
Pick one queue: a tracker project, a form that writes a record, or a folder of YAML files in a repo. The rule that makes it a queue is short. No approval happens in any vendor console without a matching queue record, written before the click.
The vendor surfaces stay where they are. GitHub requests appear in organization or enterprise settings, Claude requests reach admins in their Usage settings, and OpenAI’s go to workspace admins. The approver copies each one into the queue, or the requester files the record first and links it. Search snippets of OpenAI’s help center, which returned 403 to our fetch, say admins can send members to a custom HTTPS URL instead of the default flow; if your workspace has that option, point it at the queue.
The buttons arrived one vendor at a time, which is how a team ends up with three request paths and no queue.
Claude Code dates are npm publish dates for each CHANGELOG version. OpenAI’s admin FAQ is undated, so it isn’t plotted.
Step 2: Require five fields before anyone looks
A request missing any of these goes back to the requester unread. The fields are what let you compare this Thursday’s ask with last month’s.
| Field | Why it’s required | Example |
|---|---|---|
| Lane | Budgets belong to people; spend belongs to lanes. The field maps one to the other | pr-review-bots, running on Dana’s Copilot seat |
| Job | Approvers fund work, not people, and a job has an end | Migrate 40 services to the new logging client |
| Meter hit | A five-hour window, a weekly window, a member budget and an org spend limit each need a different fix | Copilot member AI-credit budget |
| Cost per completed task | Says whether more budget buys more finished work | $3.10 per merged PR over the last 14 days |
| One-time or standing | Sets the revert date | One-time: ends when the migration merges |
| Anomaly status (queue fills) | Feeds the auto-deny in Step 3 | None open |
| Revert date (approver fills) | Feeds the revert job in Step 4 | Oct 6, 17:00 UTC |
The meter field saves the most money. A Claude seat blocked on its five-hour window may need a reset from the reset ledger, not a budget. A lane burning usage credits on fast mode needs its speed budget read before anyone raises the ceiling.
Cost per completed task is the field requesters skip, and the one approvers need. Compute it the way the cost-per-task piece does: spend over finished, verified tasks, not attempts. A request that can’t name one is a request to fund an experiment. Fund experiments on purpose, with their own line.
Step 3: Auto-deny while the lane has an open cost anomaly
If the lane has an open anomaly, the queue denies the request automatically and puts the anomaly’s ID in the reason. A runaway loop asking for more budget is the anomaly asking for fuel. The alerting that opens and closes anomalies is its own system; the queue only reads its state.
Two rules keep the gate honest. If the anomaly feed can’t be read, the request drops to manual review with a flag, and it never auto-approves. And the gate is a policy, not a wall: anyone with the vendor role can still click approve in the console.
The wall behind it is the role list. At GitHub that’s organization owners, enterprise owners and billing managers; on claude.ai, Owners, Primary Owners and custom roles with billing rights. Keep those lists short, staffed by people who work the queue, and reconcile them weekly in Step 6.
Step 4: Approve with a revert date, and a job that keeps it
Approvals ratchet, and OpenAI documents it: approval creates a user override. GitHub’s approval updates the member’s budget to the amount you set, and nothing in its docs lowers it again. Anthropic doesn’t say what its increase sets or how long it lasts. No vendor documents an automatic revert, so the revert date is your practice, and a date nobody enforces is a comment.
Set the date by the request’s kind. A one-time request reverts at the job’s expected end, capped at 14 days. A standing request reverts at the next monthly budget review unless that review makes it the new baseline with evidence. Either way, the queue records the pre-approval amount, so the revert restores a number instead of a guess.
The record and the job below are illustrative. set_member_budget is a stub for whatever admin surface or API your vendor exposes; none of the pages cited here documents a revert call.
# budget-request.yaml (illustrative): one record per request, from any button
id: br-0929-014
source: github-copilot # github-copilot | claude-code | claude-ai | chatgpt-work
requester: dana
lane: pr-review-bots
job: Migrate 40 services to the new logging client
meter_hit: member-ai-credit-budget
cost_per_completed_task_usd: 3.10 # last 14 days, merged PRs only
kind: one-time # one-time | standing
requested_usd: 400
anomaly_open: false # filled by the queue from alerting
decision: approved
approved_usd: 300
previous_usd: 150 # what the revert restores
approver: priya
revert_at: 2026-10-06T17:00:00Z
# revert_budgets.py (illustrative): run hourly from a scheduler
from datetime import datetime, timedelta, timezone
MAX_DEFER = timedelta(hours=24)
def run(queue, set_member_budget, lane_is_mid_job):
now = datetime.now(timezone.utc)
for r in queue.approved(revert_due_before=now):
if lane_is_mid_job(r.lane) and now - r.revert_at < MAX_DEFER:
queue.note(r.id, "revert deferred: lane mid-job")
continue
try:
set_member_budget(r.source, r.requester, r.previous_usd)
except Exception as err:
queue.page_owner(r.id, f"revert failed: {err}")
continue
queue.mark_reverted(r.id, at=now)
for r in queue.approved(revert_due_before=now - MAX_DEFER):
queue.page_owner(r.id, "revert overdue")
The job waits up to a day for a running job to finish, then reverts anyway, because a revert that can wait forever never happens. When a call fails, it pages instead of retrying quietly; an overdue revert is a line in the weekly count, never a silent miss. Give the job its own credential with budget rights and nothing else.
Two exits before an approval, one job after it, and a weekly count that watches all three.
Step 5: Write the SLA and the approval rules down
A queue without an SLA gets bypassed by the first person who stays blocked long enough. Publish the rules where requesters see them. The values below are our starting defaults, not vendor figures, and the hygiene that keeps action-approval queues from rotting applies here too.
| Request | Decision rule | Approver | SLA | Default revert |
|---|---|---|---|---|
| Lane has an open cost anomaly | Auto-deny, anomaly ID in the reason | None | Immediate | Not applicable |
| A required field is missing | Returned unread | None | Immediate | Not applicable |
| One-time, critical lane blocked | Approve if cost per completed task is inside the lane’s band | On-call budget owner | 2 business hours | Job end, 14 days at most |
| One-time, other lanes | Approve inside the team’s monthly envelope | Lane owner | 1 business day | Job end, 14 days at most |
| Standing increase | Needs 30 days of cost-per-task data and a named owner | Budget owner and finance | Next weekly review | Next monthly review |
| Above the approver’s limit | Escalate with the record attached | Next approver up | 1 business day | As above |
Anthropic already puts friction at a dollar line: since v2.1.207, /usage-credits amounts over $1,000 need a typed confirmation. Put your escalation line somewhere similar, and write it in the table rather than in someone’s head.
Step 6: Count requests, approvals and reverts per lane, weekly
Every week, per lane: requests, approvals, denials by reason, reverts executed, reverts overdue, median time to decision, and the net ratchet, which is approved increases minus reverted ones. Then reconcile. Compare each member’s budget in the vendor console with the queue’s last recorded amount; a mismatch is an approval that skipped the queue.
Three patterns deserve a conversation, at thresholds we’d start with. More than two requests a week from one lane means its budget, its job or its effort level is wrong. A net ratchet above zero three weeks running means standing increases are hiding as one-time ones. A median decision time above the SLA means the queue is about to be bypassed.
Caps come from wherever you set them, often per-worker fan-out budgets. The queue is how exceptions to those caps get granted, and how they get taken back.
Step 7: Decide the requests you can already see coming
Cursor’s Rollouts credits run out around Oct 3. Decide before then whether Rollouts gets a one-time or standing budget, and at what cost per change, so the first request is judged against a rule instead of setting one.
Claude Code extended member requests to Enterprise orgs billed through AWS Marketplace, self-serve Enterprise and trials on Aug 27 (v2.1.248). If you’re one of those orgs, requests may already be waiting. The same release notes that DISABLE_EXTRA_USAGE_COMMAND hides the command. That buys time, not a policy.
Where budget requests slip past the queue
The ratchet. Every approval sticks. Signal: net ratchet above zero month over month while completed tasks per lane stay flat. Fix: the revert job, plus a standing-request path that forces the question into the monthly review.
The revert that breaks a running job. A budget drops mid-migration and the lane blocks again. Signal: a block on the same lane within an hour of a revert. Fix: the one-day wait in Step 4, and revert dates set from the job’s end rather than the calendar.
Approvals outside the queue. An owner clicks approve in the console because the requester messaged them directly. Signal: the weekly reconciliation finds a budget with no matching record. Fix: a shorter approver role list, and each mismatch treated as a finding with a name on it.
The request that never arrives. A lane is blocked and nobody asked, because its Claude Code session ran headless or under Remote Control, where the command sends nothing. Before v2.1.222, a dismissed request also blocked new ones. Signal: a blocked-lane alert with no queue record. Fix: route the block alert itself into the queue as a request stub, and keep CLIs current.
The rubber stamp. Approvals land in under two minutes with the cost-per-task field blank. Signal: decision times far below the SLA and empty fields on approved records. Fix: the queue refuses to approve incomplete records, and the weekly count names approvers.
One queue above every vendor’s button
Four buttons across three vendors, a fourth vendor whose trial credits end around Oct 3, and no shared view of who asked for what or when it comes back down. Your fleet spends across all of them, so the queue lives in the layer that runs the fleet, next to the anomaly alerts, the reset ledger and the kill switches. That layer is what agentic ops means in practice: every approval carries an owner, a reason and an end date, whichever vendor drew the button.
The button will keep getting easier to press. Make the revert just as easy.
FAQ
How do Copilot budget increase requests work?
A Copilot Business or Enterprise member on usage-based billing who runs out of AI credits can request more budget. The request routes to whichever account pays. An organization owner, enterprise owner or billing manager sets an amount and selects Approve and increase, which updates the member’s budget and restores access immediately.
Does approving a Copilot budget request raise the budget permanently?
GitHub doesn’t say. Approval updates the member’s budget to the amount you set, and its docs are silent on later billing periods and describe no revert. Treat every approval as standing until you lower it. OpenAI is explicit for ChatGPT Work: approval creates a user override.
Can a Claude Code agent request more usage credits by itself?
No. On Team and Enterprise, a member without billing access runs /usage-credits, confirms, and the request goes to the organization’s admins. The confirmation only appears in interactive sessions, so with the -p flag or from Remote Control the command sends no request. A person at a terminal always asks.
Sources
- GitHub Changelog: Copilot budget increase requests are generally available — Sep 16, 2026; who approves, what approval does, plan scope
- GitHub Docs: managing Copilot budget requests — approval sets the member’s budget; silent on later billing periods
- GitHub Docs: setting up budgets — user-level budgets can block a user while the org has capacity
- Claude Code Docs: add usage credits to your subscription —
/usage-creditsby role; requests only from interactive sessions - Claude Help Center: manage usage credits for Team and seat-based Enterprise plans — member requests and admin review
- ChatGPT Learn: ChatGPT Work admin FAQ — “Approval creates a user override”
- Cursor changelog: Rollouts and Security Reviewer — Sep 23, 2026; 10 days of Rollouts credits
- anthropics/claude-code CHANGELOG — entries for v2.1.207, v2.1.211, v2.1.222 and v2.1.248
