agentcli separates the control-plane contract from backend execution details. Capabilities make that split explicit and machine-readable.
Control-plane capabilities:
schemadescribevalidatecompileapplyjson-rpc
Inspection capabilities:
inspectfield-masksanitize-basicndjson
Execution-shape capabilities:
model-policyexecution-intentoutput-hintstimeout-supportcontext-retrieval
Runtime capabilities:
runtime-executiondurabilityretryapproval-gatesdeliverylineage
agentcli targets returns structured data for each target with two fields:
capabilities: a string array of active capability identifiers (matching the control-plane and inspection groups above, using dash-delimited names likefield-mask)features: a keyed object where each key corresponds to an execution-shape or runtime capability (using underscore-delimited names likemodel_policy,execution_intent) and each value describes the support level. Valid values:"portable","runtime","model+thinking","intent-only",true, orfalse. The"model+thinking"value indicates the target compiles model policy into separate model and thinking fields for the backend.trueindicates full runtime support;falseindicates the feature is not supported.
Feature keys: approvals, model_policy, execution_intent, output_hints, timeout_support, context_retrieval, runtime_execution.
Provides:
schemadescribevalidatecompilejson-rpc- portable
model-policy - portable
execution-intent - portable
output-hints - portable
timeout-support - portable
context-retrieval
Does not provide:
- durable execution
- retries
- delivery
- lineage
Provides in agentcli exec (single-machine, non-durable):
approval-gates(local enforcement): refuses execution of tasks whoseapproval.policyismanualwithout a matching, unconsumed, unrevoked, unexpired ssh-signed grant in~/.agentcli/state/approvals.ndjson; refuses unconditionally whenpolicyisauto-reject
Interpretation:
- approval fields declared at authoring time are both portable plan metadata AND enforced locally by
agentcli exec(grants managed viaagentcli approveandagentcli approvals) - durable multi-actor and cron-triggered approval flows still require a runtime target such as
openclaw-scheduler - plan/read-only intent is preserved in the compiled plan
- output hints and budgets are preserved for another backend or consumer
Provides through compile or inspection:
compileapplyinspectfield-masksanitize-basicndjsonmodel-policyexecution-intentoutput-hintstimeout-supportcontext-retrieval
Provides in the runtime itself:
runtime-executiondurabilityretryapproval-gatesdeliverylineage
Interpretation:
- model policy compiles into scheduler model and thinking fields
- plan/read-only intent compiles into runtime execution-boundary fields
- output hints compile into scheduler output preview/offload budgets
- queue, approval, and fan-out budgets compile into runtime guardrails
Adopters should not assume every target is a full runtime, and they should not assume every backend enforces every field the same way.
The value of agentcli is that the manifest contract remains stable while target support varies in explicit ways.
That lets:
- lightweight tools implement authoring only
- protocol bridges implement validation and compilation
- runtimes implement execution without owning authoring UX
- operators inspect exactly which features are portable versus runtime-enforced