# CLI reference

> Palladin documentation · 1.0 · EN · 2026-10-25


Browser Inject currently works only on macOS through the Palladin extension. Linux CLI support does not include Inject.

## Syntax

```sh
palladin [--id <profile>] <command> [options]
palladin <command> --help
```

`--id` selects the profile for a call. Set it explicitly in automation. Angle brackets identify values to replace; they are not part of the command.

## Setup and diagnostics

| Command | Behavior |
| --- | --- |
| `--version` | Running CLI version. |
| `doctor` | Runtime diagnostics without opening identity. |
| `init` | Create the default profile if missing. |
| `pair-agent --host <origin> --setup-descriptor '<descriptor>'` | Browser-approved connection. |
| `connect --host <origin>` | Alternative connection with a masked API-key prompt. |
| `status` | Selected Agent registration status. |
| `pair` | Pair active vaults and pin confirmed signing keys. |
| `agents list` | List local aliases. |
| `agents create <name>` | Create a separate identity. |
| `agents rename <old> <new>` | Rename an alias without moving secrets. |
| `mcp serve` | MCP server over stdio. |

`connect --api-key-stdin` accepts a key through standard input. Never put a literal key in shell commands, history, or a conversation. Prefer browser pairing.

## Search

```sh
palladin --id <profile> search '<query>' --json --page-size 10
```

The trimmed query needs at least two characters. `--cursor` continues a previous page; `--page-size` accepts 1–100. Metadata visibility does not grant secret access.

## Use data

| Command | Main options |
| --- | --- |
| `get <vault-id> <entry-id>` | `--reason`, `--field` or `--field-id`; returns plaintext. |
| `exec <vault-id> <entry-id> -- <program> <args>` | `--reason`, repeatable `--env NAME=FIELD`; never interpolate secrets into arguments. |
| `exec <vault-id> <script-entry-id>` | Execute a Script; `--parameters-stdin` for its parameter object. |
| `inject <vault-id> <entry-id>` | `--provider extension`, `--target-tab-id`, `--page-url`. |
| `report-stale <vault-id> <entry-id>` | `--code login_rejected`, `auth_failed`, or `manual`. |

For `get`, `exec`, and `inject`: `--wait 2m` bounds approval waiting (up to 5 minutes), `--no-wait` returns immediately, `--poll-interval 10s` controls polling, and `--progress plain|json|none` selects progress reporting. Inject rejects CDP, custom field selectors, `--no-submit`, `--fill-only`, `--field`, `--field-id`, and `--verbose`. Use the extension provider.

## Browser

`browser status` checks the channel. `browser install` requires a supported artifact and provider. Tab ID and URL select a target; the runtime and extension independently verify its origin and document.

Pass `--target-tab-id` and `--page-url` together, or omit both. Experimental live forms require an explicit target.

## Destructive operations

`disconnect --purge --confirm` removes the selected local identity. `purge --confirm` removes all local profiles. Neither is a diagnostic step; both require a deliberate user decision. Local identity deletion does not replace revoking organization access.
