Skip to content

Limits and outcomes

This page collects the runtime defaults most hosts need when admitting a task. Provider/MCP/A2A transports add their own frame, request and concurrency bounds.

Default run limits

LimitDefault
Combined input/instructions/tool arguments1 MiB
Model output bytes per call4 MiB
Serialized tool result8 MiB
Serialized model request context32 MiB
Requested model output tokens65,536
Native events1,000,000
Native JSONL trace256 MiB
Run duration3,600 seconds
Shell/tool duration900 seconds
Model call countunlimited
Tool call countunlimited
Aggregate token/cost ceilingunset

CLI timeouts accept 1–86,400 seconds. A tool deadline cannot extend past its root task. Counts use checked arithmetic and never wrap.

Filesystem work quotas are unset by default. Individual tool responses remain paginated/bounded, and hosts can set maximum file bytes, entries, search depth and scanned bytes in a deployment or typed RunSpec.

Terminal outcomes

StatusMeaning
completedFinal output stopped normally; includes provider-reported usage
cancelledLocal cancellation won and owned cleanup settled
timed_outRoot deadline won
policy_deniedA built-in or configured policy rule denied work
limit_exceededA named runtime or accounting limit was exhausted
failedA closed failure code and delivery certainty describe the failure

Limit kinds include input_bytes, output_bytes, output_tokens, model_calls, tool_calls, tool_input_bytes, tool_output_bytes, context_bytes, events, trace_bytes, filesystem_work, total_tokens and cost.

Failure codes include provider rejection/transport/malformed stream, model-attempt timeout, incompatible continuation, unsupported provider content, context/compaction failure, output validation failure, invalid tool arguments, tool execution/cleanup, child/remote-task failure, event sink I/O and accounting bound violation.

Delivery certainty

A failed outcome says whether the provider or remote side may have observed the request:

  • not_sent: Pablo has evidence delivery did not occur.
  • may_have_been_sent: delivery cannot be proven either way.
  • response_received: the peer responded or streaming began.

Use this field when deciding whether a host may safely retry. Do not automatically replay uncertain tool or model work.

Accounting

Every admitted result includes:

  • model and tool call counts
  • reported input/output/cache token totals
  • normalized reported cost where available
  • conservative charged tokens/cost when hard limits are supported

Missing usage from any contributing delivered call makes that aggregate unknown. A definitely unsent attempt charges a known zero while retaining its call count. An uncertain delivery keeps its reservation when hard accounting is active.

The machine envelope represents u64 values as decimal strings. The completed outcome’s provider-reported usage is numeric for compatibility. JavaScript clients should use BigInt for the envelope counters.

CLI exit codes

CodeMeaning
0Task completed or offline inspection succeeded
1Admitted task ended non-completed, or an inspection found a runtime issue
2Invalid arguments/configuration or other pre-admission setup error
130User cancellation completed

doctor has its own more specific diagnostic codes for credential, provider, MCP and policy failures. JSON task framing remains unchanged.

Platform scope

Pablo targets macOS and Linux. Shell process-group cleanup has platform-specific implementations for those systems. The prerelease plan requires native acceptance on:

  • macOS arm64
  • macOS x86_64
  • Linux x86_64
  • Linux arm64

Cross-compilation can prepare an artifact but cannot satisfy a native execution gate. Release archives and the full native matrix remain pending.

Version spaces

Several independent versions appear in integrations:

  • Cargo/executable version: currently 0.1.0-dev.1
  • native event/task contract revision: currently c3.33
  • deployment document schema: 1
  • deployment contract revision: advances with implemented option semantics
  • ACP protocol: stable v1 plus pablo/v1 or pablo/v2 negotiated metadata
  • OpenTelemetry mapping and pinned GenAI semantic-convention revision

Do not substitute one version for another. Negotiate or validate the contract used by your integration.

Pablo is prerelease software. Hosts own sandboxing, approvals and application state.