Service limits
Design around current resource, payload, query, execution, and Tenant Quota bounds.
These are the limits Blazing Agents enforces today. Use them to validate input before you send it and to plan capacity. They are not billing entitlements or recommended batch sizes.
Last verified: 2026-08-27.
Contract
Fixed limits apply to every tenant. Limits marked deployment-configurable have a default within the range shown. A tenant quota is a ceiling you set yourself to protect against runaway token or request use; billing is separate and described in Usage and quotas.
| Limit | Current value | Scope | On exceed | Kind |
|---|---|---|---|---|
| API keys per Tenant | 5 | Tenant | api_key_limit_reached on create | fixed |
| API key name | 80 characters | API key | validation_failed | fixed |
| API key expiry | when supplied, must be later than the current time | API key create | invalid_request | fixed |
| Agent fields | name 80; instructions 3,000 characters | Agent | validation_failed | fixed |
| Tenant resource creation rate | 60/minute and 1,000/day, independently for Agents, Tasks, and Workspaces | Tenant and resource type | rate_limited; use Retry-After | service protection |
| MCP Connections per Agent | 10 | Agent | validation_failed | fixed |
| Agent Version page | default 50; max 200 | list request | validation_failed | fixed |
| Agent avatar upload | 512 KiB; PNG, JPEG, or WebP matching filename extension | upload | 413 for size; 415 for media type; code invalid_request | fixed |
| Workspace name | 80 characters when present | Workspace | validation_failed | fixed |
| Workspace page | default 50; max 200 | list request | validation_failed | fixed |
| Skills per Agent | 100 | Agent | skill_limit_reached on create | fixed product guard |
| Skill bundle | 10 MiB upload and stored/uncompressed bytes; 100 regular files | Skill | typed Skill size or file-count error | fixed |
| Skill frontmatter | name 64; description 1,024; compatibility 500 characters | SKILL.md | skill_invalid_markdown | fixed |
| Skill copy destinations | 30 distinct Agents | one copy request | validation_failed | fixed |
| Skill page | default 50; max 100 | Agent Skill list | validation_failed | fixed |
| Providers per Tenant | 20 | Tenant | provider_limit_reached on create | fixed |
| Provider name | 80 characters | Provider | validation_failed | fixed |
| Custom Provider base URL | required, non-empty, and valid on create; immutable after creation | custom Provider config | validation_failed | fixed |
| MCP Connections per Tenant | 50 | Tenant | mcp_connection_limit_reached on create | fixed |
| MCP Connection input | name 80; URL/client ID/scope 2,048; bearer token/client secret 8,192 characters | connection request | validation_failed | fixed |
| MCP Tools | 128 per Connection; 256 per Turn | remote MCP catalog | connection/Turn fails safely | fixed |
| MCP payloads | definition 256 KiB; definitions per Connection 1 MiB; Tool result 1 MiB; request context 16 KiB | MCP setup/call | connection/Tool error | fixed |
| MCP forwarded metadata | 32 keys, each 64 characters | MCP Attachment | validation_failed | fixed |
| Prompts per Tenant | 100 | Tenant | prompt_limit_reached on create | fixed |
| Prompt fields | name 80; template 10,240 JavaScript string units; 10 distinct variables | Prompt | validation_failed | fixed |
| Task fields | name 80; prompt 6,000 characters | Task | validation_failed | fixed |
| Task schedule fields | cron expression 120; timezone 64 characters | Task cron schedule | validation_failed | fixed |
| Task interval | minimum 60,000 ms | interval schedule | validation_failed | fixed |
| Active Task run | 1 per Task | Task | overlapping schedule fire is skipped | fixed |
| Task run lifetime | default 35 minutes; minimum 1 minute | Task run | lifetime cancellation stops the Turn | deployment-configurable |
| File write input | 512,000 UTF-8 bytes | one write Tool call | Tool error output | fixed |
| File edit input | 256,000 UTF-8 bytes across old and new text | one edit Tool call | Tool error output | fixed |
| File Tool output bytes | 50 KiB | one Tool result | output is truncated | fixed |
| File Tool output lines | 2,000 lines | one Tool result | output is truncated | fixed |
| File grep output | 100 matches; 500 characters per rendered match line | one grep Tool call | extra matches and line text are truncated | fixed |
| File glob output | 1,000 paths | one glob Tool call | extra paths are truncated | fixed |
| Artifact file | 10 MiB | one publish_artifacts path | Tool error output | fixed |
| Artifact batch | 10 paths | one publish_artifacts call | Tool validation error | fixed |
| Artifacts per Session | 100 | Session | artifact_session_cap_reached while recording | fixed |
| Memories per Agent | 500 across all Attribution partitions | Agent | least-recently-accessed rows are evicted on create | fixed |
| Memory text | 10 KiB UTF-8 bytes | Memory | validation_failed | fixed |
| Memory page | default 50; max 100 | list request | validation_failed | fixed |
| Memory Tool search | default 10; max 20 | Tool call | Tool validation error | fixed |
| Session or Task-run message page | default 50; max 200 | list request | validation_failed | fixed |
| Tool approval decision reason | 1,000 characters | approval decision | validation_failed | fixed |
| Other cursored resource pages | Sessions, Tasks, and Task runs default 50/max 200; Artifacts fixed 50 | list request | validation_failed or invalid_cursor | fixed |
| Usage query window | default last 30 UTC days; bounds differ by at most 31 days | query | validation_failed | fixed |
| Usage Session top-N | default 50; max 200 | groupBy=session | validation_failed | fixed |
| Usage overview top-N | default 5; max 20 | Agent, End-user, and model ranking | validation_failed | fixed |
| Quota reset day | 1–28 | Tenant Quota | validation_failed | Tenant-configurable |
| Quota ceilings | positive token/request integers or null; null/absent is unlimited | Tenant | Turn returns quota_exceeded; Task preflight becomes blocked | Tenant-configurable |
| Tenant display name | 80 characters | Tenant settings | validation_failed | fixed |
| Agent loop steps | 64 | Turn | loop reaches its terminal bound | fixed |
| Turn deadline | default 30 minutes; configurable range 1–60 minutes | Turn | cancellation/deadline stops new dispatch | deployment-configurable |
| MCP runtime timeouts | connect 10 s (1–30); auth 10 s (1–30); discovery 15 s (1–60); Tool 60 s (1–300); cleanup 5 s (0.1–10) | MCP operation | operation fails safely | deployment-configurable |
Byte values use binary units (1 MiB = 1,048,576 bytes). Other length limits
count characters. The prompt template limit counts 10,240 JavaScript string
units.
Limits do not all behave the same way. When an agent is full, the least recently used memory is removed instead of the new one being rejected. An overlapping task schedule skips the run without creating a task-run record. Workspace operations are not queued behind a compute limit. Automatic context compaction summarizes older messages by default, and the agent's reserve setting controls when it starts. Context can still overflow when compaction is off, cannot shrink a single oversized input, or fails. A turn deadline does not undo work a tool has already sent to an external system.
Session turns, stateless generation, and task runs are all metered turns. Memories do not count toward durable storage. Your tenant quota is neither a billing plan nor a rate limit.
Examples
Warn when request usage nears your own ceiling:
const [usage, settings] = await Promise.all([
client.usage.get({ from: "2026-07-01", to: "2026-07-20" }),
client.tenant.get(),
]);
const ceiling = settings.quota?.monthlyRequestLimit;
if (ceiling !== null && ceiling !== undefined) {
const remaining = ceiling - usage.totals.requestCount;
if (remaining < ceiling * 0.1) console.warn("Request quota is nearly used");
}Next
- Errors for the codes these limits return.
- Limits and reliability for retries and timeouts.
- Usage and quotas to set a tenant quota.