Troubleshooting | Ghostable CLI 3.x | Ghostable                              Menu

 Troubleshooting

   Collect safe diagnostics
------------------------

Start with version, repository, and redacted project state. These commands should not print decrypted values:

 Diagnostic baseline     Copy

 ```
$ ghostable --version
$ ghostable status --json
$ git status --short
$ git diff -- .ghostable

```

 Record the operating system, installation method, exact command, exit code, and redacted stderr. Never attach `GHOSTABLE_CI_TOKEN`, local identity files, generated env files, `--show-values` output, or provider credentials.

 Project not found
-----------------

 Run Ghostable from a repository directory containing `.ghostable/ghostable.yaml`, or from one of its descendants. If the repository has no manifest, initialize a new project with `ghostable setup` or pull the branch that contains the reviewed `.ghostable/` state.

 Locate project state     Copy

 ```
$ git rev-parse --show-toplevel
$ git status --short -- .ghostable

```

Do not copy another project's manifest to fix discovery. Its project ID is a cryptographic boundary, not a reusable template value.

 Identity and policy errors
--------------------------

   `Identity registered to another path`  This checkout or worktree is a different canonical root. Join it as a new device instead of copying private identity material.

  `Device has been revoked`  The old identity is permanently unusable. Join with --force to create a new identity, then request access again.

  `Policy signer is not trusted or policy is stale`  Fetch and review the latest policy and access commits from the authoritative branch. Never lower a trusted policy version or repair signatures by hand.

  `Invalid signature`  Stop and inspect Git history. Restore one complete reviewed record generation or replay the Ghostable operation from clean state.

 Create a replacement device identity     Copy

 ```
$ unset GHOSTABLE_CI_TOKEN
$ ghostable access join --force --name "Replacement workstation"

```

On PowerShell, remove an accidentally inherited automation token with `Remove-Item Env:GHOSTABLE_CI_TOKEN` before joining as a human device.

 User-presence failures
----------------------

 Protected plaintext operations require an interactive local session. Retry from a terminal attached to the signed-in desktop session and complete Touch ID, Windows Hello, or the local PAM-backed confirmation. SSH sessions, background services, redirected input, and headless jobs generally cannot satisfy the prompt.

 Use a dry run when it is sufficient. For CI or deployment automation, create a narrowly scoped automation credential instead of attempting to bypass local user presence.

 Automation token failures
-------------------------

   `Missing token`  Bind GHOSTABLE\_CI\_TOKEN through the job secret environment, not as a CLI argument or echoed shell value.

  `Invalid prefix or malformed token`  Replace the secret from its trusted source. Tokens cannot be reconstructed from repository records.

  `Project ID mismatch`  The token belongs to another Ghostable project. Confirm the checkout and create a project-scoped replacement.

  `Revoked credential`  Create a new credential, commit its public records, update the job secret, and remove the old secret.

  `Permission denied`  Inspect access matrix and grant only the required environment and reader or writer role.

Do not expose protected tokens to forked or unreviewed pull-request code. Use credential-free `review --secrets-only` for that trust boundary.

 Provider CLI failures
---------------------

 A Ghostable provider dry run does not invoke the provider CLI, query remote state, or test authentication. For a real deployment, confirm the expected `forge`, `vapor`, or `cloud` executable is on `PATH`, outside the application repository, and authenticated in the same user or runner context.

 Provider executable checks     Copy

 ```
$ forge --help
$ vapor --help
$ cloud --help

```

 If a provider push fails, treat its stderr as potentially sensitive, verify the remote environment before retrying, and inspect OS temporary storage after abrupt runner termination. Ghostable redacts known values from provider failures, but transformed provider output may still require manual redaction.

 Git conflicts
-------------

 Do not hand-merge signed records. Follow the [repository conflict runbook](https://ghostable.dev/docs/3.x/workflows/projects#git-conflicts) to select one complete record generation, replay the discarded Ghostable operation, and verify status, validation, review, and the final Git diff.

    On this page

    [ ![Ghostable](https://ghostable.dev/images/logo-dark.svg) ![Ghostable](https://ghostable.dev/images/logo-light.svg) ](https://ghostable.dev)

   CLI 3.x     [   CLI 3.x ](https://ghostable.dev/docs/3.x) [   Desktop ](https://ghostable.dev/docs/desktop)

  CLI 3.x introduction Documentation local first no login encrypted repository plaintext hosted service

  Installation Documentation brew homebrew npm npx linux windows PATH version update

  Start a new project Getting Started setup seed dotenv owner initialize

  Adopt an existing project Getting Started existing env import authoritative source adopt

  Onboard a team member Getting Started join request approve roles offboarding pull request

  Repository and storage Core Concepts .ghostable git conflict merge worktree private identity metadata

  Environments Core Concepts protected production preview staging push sync pull replace run mask-output

  Variables and promotions Core Concepts var promote copy context annotation key

  Access and devices Core Concepts identity reader writer grantor owner revoke rotate leave delete

  Daily development workflow Workflows pull diff validate review clean daily

  Review and secret scanning Workflows scan sarif github suppress secrets drift

  Hygiene and rotation Workflows rotation stale unused suppression environment key

  Automation credentials Automation &amp; CI GHOSTABLE\_CI\_TOKEN ci deploy credential powershell revoke replace

  Continuous integration Automation &amp; CI GitHub Actions fork pull request JSON stdout stderr exit codes mask-output

  Deployments Automation &amp; CI Forge Vapor Cloud provider CLI dry-run preserve remote keys temporary files

  Validation Reference schema required nullable regex min max different\_from

  Command reference Reference --help --json NO\_COLOR flags aliases exit code automation

  Configuration Reference ghostable.yaml activity mode auditEnvironments scan ignores deployTarget dotenv syntax

  Security Reference cryptography XChaCha20 Poly1305 HKDF user presence threat model

  Backups &amp; Offline Reference recovery offline restore clone key identity

  Agent integration Reference AGENTS.md capabilities allowlist coding agent

  Troubleshooting Reference no project found revoked identity stale policy user presence invalid CI token provider CLI git conflict diagnostics

  Ghostable Desktop overview Desktop

  Installation Desktop

  Projects and setup Desktop

  Interface tour Desktop

  Environments and variables Desktop

  Local environment files Desktop

  Validation and review Desktop

  Activity Desktop

  Access and automation Desktop

  Project settings Desktop

  Application settings Desktop

  Licensing and updates Desktop

  Security and storage Desktop

  Troubleshooting Desktop    No results found
