# CLI workflows and automation

> Use files, stdin, deterministic deployment keys, event identities, structured output, and bounded queries safely.

The CLI maps one command to one public Platform API request. It does not hide a series of unrelated mutations behind a convenience command. That makes Policy decisions, idempotency, failures, and audit evidence predictable across the CLI and direct HTTP use.

## Inputs and secrets {#inputs}

Use `--body @request.json`, `--body @-`, or the equivalent data option for structured input. Inline JSON is supported for small non-secret values, but files are easier to review and quote correctly. Credential material is accepted only with `--material-file` or `--material-stdin`; no option accepts secret material directly as an argument. Provider setup documents containing bootstrap secrets should be supplied through a protected file or stdin and removed after the operation.

## Idempotency and uncertain outcomes {#idempotency}

Deployment idempotency defaults to the archive SHA-256, so resubmitting identical bytes uses the same key. Run, binding, customer, and control commands accept `--event-id`; the CLI generates a UUID when it is omitted. For automation and recovery after a network failure, generate the identifier outside the command and retain it until the operation reaches a known result.

## Output and bounded reads {#output}

Human output defaults to a compact table. Use `--output json` for one response document and `--output jsonl` for collection pipelines. Binary artifacts write to stdout unless `--out FILE` is supplied. Query limits remain endpoint bounds, not assumed pagination; use only documented cursors such as `--after`, and narrow analytics windows when a result reports truncation.

Streaming commands forward committed Server-Sent Event bytes as they arrive and deliberately have no client timeout. Disconnecting the CLI does not cancel a Run. Reconnect using the Run identity and inspect authoritative workflow state before applying a control.
