> ## Documentation Index
> Fetch the complete documentation index at: https://runinfra.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI troubleshooting

> Understand sign-in, connection, terminal, and recovery messages from the RunInfra CLI.

Run `runinfra doctor` to inspect a connection without sending paid requests.
Use `runinfra doctor --offline` to skip network reads.
This guide covers CLI 0.3.0.

## Launcher not found

Run the PATH command printed after connection in the same terminal.
Then run the launcher, such as `claude-run`.

The printed **Run now** command uses the launcher's full path and works without a PATH change.
Launchers live in `<RunInfra config>/bin/`.
On Windows, the primary launcher ends in `.cmd`.

The PATH command affects the current terminal.
For future terminals, add that directory to your user PATH or shell startup settings.
RunInfra does not edit those settings for you.
Keep the agent's native command available on PATH too.

## Profile name is taken

Choose another name when Review reports an existing command, launcher, or profile directory.
For example:

```bash theme={"dark"}
runinfra connect claude --name claude-work
```

Names use 2 to 32 lowercase letters, digits, or dashes and start with a letter.
Native commands, agent IDs, and another agent's profile name are reserved.
Windows device names are refused at input: `con`, `prn`, `aux`, `nul`,
`com0` through `com9`, and `lpt0` through `lpt9`.
`--name` applies to one agent at a time.
In the app, press **e** on Review to edit the name.

## Sign-in messages

| What you see                                                                              | Next step                                                                                                                                     |
| ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Browser did not open                                                                      | Open the displayed address, or use `runinfra login --device`.                                                                                 |
| Browser sign-in is unavailable                                                            | Use `runinfra login --paste` with a workspace key.                                                                                            |
| Only workspace owners can connect a terminal                                              | Choose an owned workspace or ask its owner to connect.                                                                                        |
| Request expired or denied                                                                 | Start a new request with `runinfra login`.                                                                                                    |
| App: `Credentials use an older sign-in format. Sign in again.`                            | Run `runinfra login`.                                                                                                                         |
| Plain: `Sign in again. This credentials file uses an older sign-in format.`               | Run `runinfra login`.                                                                                                                         |
| Credential save is unconfirmed                                                            | Read the error and any unsaved-key notice before leaving. Check `runinfra whoami`.                                                            |
| `Cannot save credentials.json privately; check access with Get-Acl.`                      | Windows could not confirm private access, so nothing was saved. Follow [Windows credential save recovery](#windows-credential-save-recovery). |
| Credential saved with a privacy warning                                                   | Inspect the permissions at the reported path. On Windows, use `Get-Acl`.                                                                      |
| `The previous terminal credential could not be revoked; remove it in Settings, API keys.` | Keep the new sign-in and revoke the old terminal key in Settings.                                                                             |

Re-login saves the new terminal key before revoking the old one.
A replaced shared key remains active.
See [Sign-in and security](/docs/tools-sdks/connect-sign-in).

### Windows credential save recovery

The privacy refusal leaves the previous `credentials.json` unchanged and its terminal key active.
For browser or device sign-in, approval has already created a new terminal key.
That unsaved key remains active until you revoke it or it expires.
Each new browser or device approval creates another key.
Pasting a shared key does not create a key.

1. Read the key prefix in the unsaved-key notice.
2. Run `runinfra whoami` to check which credential is still saved.
3. In **Settings > API keys**, revoke the unsaved terminal key identified by that notice.
4. Inspect the RunInfra configuration directory and any existing `credentials.json` with `Get-Acl`.
5. Correct file access or a blocked permission check before starting sign-in again.

Use `Get-Acl -LiteralPath '<RunInfra config>'` with your actual configuration path.
The CLI must be able to create and verify a file private to your Windows account.
On a managed machine, ask your administrator to fix access or the permission check.

## Review will not approve

Read every consequence to the end.
Enlarge a terminal that clips required details; full setup needs at least 40 columns by 12 rows.
After resizing, read the reflowed review again.

Press **Enter** with approval selected or press **y**.
Use a fresh press.
Held or pasted keys never approve.
If the app reports that paste cannot be distinguished from typing, use a terminal that separates them.

A command-line `[y/N]` prompt requires `y`; Enter accepts its default refusal.
For automation, inspect the JSON review before repeating the command with `--yes`.
An unapproved machine invocation exits `8`.

## Plan and live usage messages

See [plan commands](/docs/tools-sdks/connect-coding-plan#plan-commands) to buy a plan or open its settings.

| Message                                                       | Next step                                                                                     |
| ------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| `No coding plan on this workspace.`                           | Use workspace credits, or have an owner choose `runinfra plan buy starter`, `pro`, or `team`. |
| `Plan information requires terminal account access.`          | Use browser sign-in. A pasted key cannot run plan commands; exit `3`.                         |
| `This server does not provide coding plan information yet.`   | Retry after the server update; exit `4`.                                                      |
| `Coding plans cannot be chosen for this workspace right now.` | Sales are closed for this workspace; exit `4`.                                                |
| `This key is Credits only and the workspace has no credits.`  | Add credits before paid work; exit `4`.                                                       |
| `Rotate this Credits-only key in the dashboard.`              | Use the dashboard to preserve the key's funding choice; exit `4`.                             |
| `Plan not confirmed. Check Account.`                          | Inspect Account or run `runinfra plan` before starting another checkout.                      |
| `No plan change was confirmed within 10 minutes.`             | The browser change can still complete. Run `runinfra plan` to check again; exit `5`.          |
| `Live usage needs the latest runinfra.ai.`                    | Retry after the server update. Unknown usage is not zero.                                     |

Exit `4` means entitlement or plan refused, or the requested agent, key or resource was not found.

## Recover edited configuration

Disconnect deletes the whole profile folder, including sessions and history. Copy what you need first.

1. Preserve the edits, sessions, and history you need.
2. Run `runinfra doctor` and inspect the affected connection.
3. If you intend to discard later managed-file changes, run `runinfra disconnect <name> --force`.
4. Read the recovery snapshot, file, and key consequences in Review.
5. Approve, then inspect the result before reconnecting.

Use the profile name for a profile or the agent id for an older in-place connection.
`--force` preserves a recovery snapshot before deleting a profile folder or restoring in-place settings.
The snapshot keeps only the files Connect wrote, not your sessions or history.
It does not bypass approval or unlock a running operation.
Recovery snapshots can retain keys; keep them private.

## Finish a pending revocation

Doctor reports the key prefix, ID, and recovery command:

```bash theme={"dark"}
runinfra keys revoke --id <keyId>
```

Review that exact key before approving.
Restore any connection still using it first.
A key held in `RUNINFRA_API_KEY` or used by another agent cannot be revoked by these commands.
Pending revocations are not retried automatically.
`runinfra disconnect <name> --keep-key` keeps the key without scheduling revocation.

## Cancel or interrupt

During connection, **Esc** stops safely and keeps the result open.
**Ctrl+C** stops in-flight handling, stops before the next agent, and requests exit `130`.
A request already sent can still complete.
A second Ctrl+C can interrupt before the result is confirmed.

Settings and keys already saved can remain after failure or interruption.
Run Doctor before retrying.
During credential saving, wait for the save result and any warning.
Closing the terminal does not confirm rollback.

## Installer messages

Use `RUNINFRA_INSTALL_BASE_URL` for a download mirror.
Installers ignore `RUNINFRA_BASE_URL`; that remains an SDK API-base setting.
The CLI API override is `RUNINFRA_API_BASE`.

Standalone installers check SHA-256.
The Windows installer checks the checksum only.
The shell installer also checks the release signature when verification is available.
Read its signature result separately from its checksum result.

| Message                                                                    | Next step                                               |
| -------------------------------------------------------------------------- | ------------------------------------------------------- |
| `release signature was NOT checked`                                        | Follow the printed signature-verification instructions. |
| `SIGNATURE VERIFICATION FAILED on SHA256SUMS. Nothing has been installed.` | Check the release source before retrying.               |
| `Downloads require the default TLS certificate validation.`                | Restore default certificate validation.                 |
| `The download timed out.`                                                  | Check the connection and download source.               |

Remote downloads through a downloader that cannot enforce HTTPS require a verified signature.
An explicit local mirror must be an existing `file:///` directory.
