Limits

Every limit Ciresk CI applies to a request, a tree, a log, an artifact, a job and a worker, with its default and what you get when you reach it. A limit named with a policy field (max_tree_entries) is your organization's to change with ciresk ci policy set <field>=<value> (needs ci:policy.write); ciresk ci policy get shows what applies to you. Where a field says "at most", that is the cell's ceiling: the policy cannot go above it. The other limits are the same for every organization.

LimitDefaultScopeWhen it is reached
Request body1 MiBone request413 payload_too_large. Bytes go through a presigned upload, never in the body.
Request body read time30 sone request408 request_timeout.
Inline blob in tree sync (max_inline_blob_bytes)64 KiB, at most 1 MiBone blobA larger blob goes through a presigned upload; ciresk ci picks the way by itself.
Tree entries (max_tree_entries)200,000, at most 1,000,000one tree413 tree_too_large; ciresk ci refuses before it uploads and names .ciresk/ignore.
Tree size (max_tree_bytes)2 GiBone tree413 tree_too_large.
Blob (max_blob_bytes)2 GiBone file of a tree413 blob_too_large.
Tree sync requests (trees_requests_per_minute)600 a minute, at most 6,000one credential, counted on each API server429 rate_limited with retry_after; ciresk ci waits and retries.
Digests per tree sync request10,000one request413 tree_missing_too_many; split the request.
Objects from dev checkpoints per request20,000 objects, 1 GiB, 64 directory levelsone job naming a tree_root413 checkpoint_too_large; sending the same root again continues.
Log chunk64 KiBone upload from a worker413 log_chunk_too_large; the worker splits its chunks below it.
Log per task (max_log_bytes)64 MiBone task attempt413 log_chunk_too_large; the log stops there and the task keeps running.
Log read per call64 KiB, at most 256 KiBone ciresk ci logs or ci__job_logs callThe answer is cut and says so; ask for the next window.
Artifact (max_artifact_bytes)1 GiBone artifact413 artifact_too_large.
Task timeout (max_task_timeout_secs)3,600 sone taskA task's timeout above it is cut to it; a task that runs past its timeout ends timed_out.
Concurrent jobs per organization (max_concurrent_per_tenant)twice the fleet's slots plus 4, at least 32queued, leased and running jobs429 concurrency_limited with retry_after 5: the job is refused, not queued. ciresk ci waits and submits again up to three times, then exits 5.
Concurrent jobs per actor (max_concurrent_per_actor)the organization'sone credential and actor429 concurrency_limited, scope: actor.
Concurrent jobs per session (max_concurrent_per_session)half the organization's, at least 4one CLI or MCP session429 concurrency_limited, scope: session. Not a policy field: it follows the organization's.
Webhooks per organization20the organization422 webhook_limit.
Unauthenticated requests per address60 a minuteone IP address, counted on each API server429 rate_limited.
Open long-polls per credential32one credential, counted on each API server429 rate_limited; close a wait before opening another.
Lease TTL300 sone task on a workerThe lease expires, the task is requeued, and the worker's next report gets worker_lease_expired.
Lease renewalevery 30 sone workerA worker renews each lease with its heartbeat, so a lease survives about ten missed renewals.

The concurrency caps follow your fleet unless your policy sets them: "the fleet's slots" are the slots your workers' pools can grow to plus the online slots of workers no pool reports, so work past a full fleet waits in the queue instead of being refused. ciresk ci budget shows concurrent: {used, limit}, and an agent sees a warning when every slot of it is in use.

A limit "counted on each API server" is enforced by every server of the cell on its own, so the cell as a whole may let a little more through. Budgets, the cost limits on a session, a day and a month, are on How it works.