Only the two message windows and the project count are enforced on the request path today. The other ceilings below are real plan attributes and the product shows them, but they are not what stops a turn. If you need to know what a specific account allows, read the meters in Settings rather than a table on a documentation site.
Messages
These are the limits that stop you sending.
Three things to know about how these two interact.
- A turn charges both windows, and the first to exhaust wins. You can be blocked by the monthly window while the daily bar still has room, and the other way round.
- Plus and Pro have no message limit at all. “Unlimited” here means there is no ceiling to hit, not a number too large to print.
- The Guest allowance belongs to the signed-out session, not to an account. It does not carry over when you sign in.
What is not metered
Reasoning, code runs in the sandbox and web searches are not metered on any plan, Guest and Free included. Every plan is limited only by the message windows.
An unlimited quota draws no bar in Settings, so an absent meter is not a broken one. If you find older copy promising a number of reasoning runs, code runs or web searches a day, that copy is stale: those counters were retired and the open buckets cleared.
Other plan ceilings
How to read that table:
- None means the capability is not available on that plan, not that it is unlimited. A guest has no projects.
- Not published means the plan carries no value for that ceiling, so this page will not invent one. Check Settings → Plan & billing on an account on that plan.
- Projects is a count, not a rate. There is no window and nothing resets: it is how many you may hold at once. This is the one non-message ceiling that is actually checked when you act.
- Library storage is a total across the files you keep, counted in decimal bytes so it matches the number the product shows. It is a different thing from the per-file limit below.
- Parallel agents is a plan attribute that the product displays but does not currently enforce. The matching error code exists regardless, so handle it rather than assuming it can never arrive.
- Images and exports are quotas rather than paywalls. Every plan, Guest included, can generate an image and export a document, in different daily amounts.
Files and attachments
Over the per-file ceiling you get
payload_too_large, and the product says so in plain words: “Files can be at most 10 MB. Remove or shrink the attachment and try again.” A file that is inside that ceiling but over what your own plan allows gives you the plan notice instead, headed “That attachment is over your plan’s size limit”.
Three more behaviours are worth knowing before you attach something large:
- A photo is compressed automatically to come in under 8 MiB, and a short clip under 10 MiB, so you do not have to shrink media by hand.
- A text or Office document is read by inlining part of its text into the turn, which is why the per-attachment character figure above matters more than the file size for a long document.
- An encrypted or password-protected document fails closed. It is not parsed, and nothing from it reaches the model.
Tool rounds in one turn
A turn can call tools, read the results and call again. That loop is bounded.
A Chat turn that would need more than eight rounds is better split into several turns. Cortex Code is given far more room because a coding task legitimately reads and edits many files on the way to one answer.
Timeouts
Most requests are given up to a minute to finish, and are given up on after that. A streamed reply is the exception: it is not cut off at a minute, because an answer that takes longer to write than a minute is normal rather than a fault.Which error code a timeout produces depends on where it happened, and Cortex does not publish a mapping. Read the
code in the response rather than inferring it from the wait. Errors explains the codes you may see.Rate limits
Cortex does not publish a requests-per-minute figure, and this page will not invent one. Nothing you can do by hand in the app is fast enough to be worth pacing, so treat rate limiting as something to handle in code rather than something to plan around.rate_limited exists in the error contract and can be returned, so a client should handle it and wait for the retry_after_seconds the response carries. Do not confuse it with quota_exceeded: one is arriving too fast, the other is a plan window running out.
Where to see your own numbers
1
Open Settings, then Plan & billing
The current plan is shown with a CURRENT PLAN badge, above the meters.
2
Read the meters
Each quota shows
{value} used and, where a window applies, Resets in {label}. A quota that is unlimited on your plan has no bar at all.3
Check storage separately
The STORAGE section shows how much of your Library allowance is in use. If it cannot load it says “Storage usage could not be loaded” and offers Retry.
4
Check tokens under Usage
Pick a Usage window of 7 days, 30 days or 90 days. Cortex Chat, Cortex Code and Cortex Bot are counted separately, anything that could not be attributed shows as Unattributed, and there is a PER MODEL breakdown. An empty window reads “No recorded tokens in this window.” because empty windows stay zeros rather than being filled in with an estimate.
When you reach a limit
A used-up window is not shown as a generic error. You get a Plan limit reached notice reading “You have used everything this plan allows in the current window.”, withResets in {label}, Current plan: {plan} and, when a model is still available to you under the limit, Continue with that model. While the reset time is being worked out it says “Working out when this resets…”, and once the window has rolled over it says “Your allowance has reset, try again”.
The heading names the window you exhausted:
Which code you get depends on why you were stopped:
Spend controls
Usage credits, top-ups and a spend cap are present in the interface but resolve to “Not available on this deployment” or “Not reported”. There is nothing to configure there yet, and no way to buy capacity beyond what your plan includes. Plan changes themselves are made from Settings → Plan & billing → Change plan, which notes that “Switch anytime — changes take effect at the next billing cycle.”Limits that live with their feature
Some ceilings belong to one capability rather than to your plan, and they are documented where you meet them: how many servers you may connect and how many tools they may contribute in MCP servers, how far a research run will read in Deep Research, and what a document export will accept in Document export.Related
- Plans and quotas for what each plan costs and how to change plan.
- Errors for the problem document behind every limit message.
quota_exceededfor the code a used-up window returns.- Models for the context and output ceilings, which are per model rather than per plan.
- Library for what counts towards your storage total.