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

# CLI security and privacy

> Understand what the Custory CLI can access and how to use it safely.

Use this page when you need to evaluate the CLI before using it with product context, private briefs, scripts, or coding agents.

## What the CLI can access

The CLI can access Custory through the account you sign in with.

It can only work with workspaces available to that account. Workspace roles still matter: read-only access is not enough for write actions.

## Browser-based authentication

`custory login` uses a browser sign-in flow.

The CLI prints an authorization URL and code, but it should never print your local session token.

After sign-in, the CLI stores its rotating credential in your operating system credential store when available.

The current stores are:

* macOS Keychain on macOS
* Linux Secret Service on Linux when available
* a private local file with `0600` permissions as the fallback

If the fallback is used, the CLI warns you.

The CLI discovery document is loaded from:

```text theme={null}
/.well-known/custory-cli.json
```

That route uses `Cache-Control: no-store`. Use `--app-url` only when you intentionally need the CLI to discover a non-default Custory app environment, such as a staging environment provided by Custory.

The current CLI OAuth scopes are:

```text theme={null}
openid profile email offline_access profile:read workspace:read workspace:create journey:read journey:write persona:read persona:write source:analyze
```

## Logout and revocation

Run:

```bash theme={null}
custory logout
```

This removes the local credential and revokes the remote CLI session when possible.

For MCP installations, run:

```bash theme={null}
custory mcp uninstall --client codex
```

This removes the Custory MCP entry from the client config and revokes the MCP credential when the CLI has installation metadata for it.

## Website context

When you use `--website`, Custory uses the public page as product context.

Use public website input for pages you would be comfortable using as a product explanation. Do not rely on a website if it is outdated, too vague, blocked, private, or about a different product.

Website context can produce useful structure, but it can also infer incorrectly. Review the source summary and final journey.

For first-run website context, Custory applies safety limits before using the page:

* website source policy allows up to `12` pages
* only public `http` and `https` URLs are accepted
* localhost, private networks, metadata hosts, and DNS results resolving to private addresses are blocked
* sensitive routes such as login, signup, dashboard, account, admin, checkout, legal, privacy, and cookie pages are blocked
* redirects are rechecked on every hop
* the redirect limit is 4 hops
* the response-size limit is `1,500,000` bytes
* the website fetch time limit is `20` seconds

## Private briefs

When you use `--brief` or `--stdin`, the CLI sends the text you provide to Custory as private product context.

Good briefs include:

* product summary
* target customer
* journey goal
* key touchpoints
* known friction
* evidence gaps

Do not include:

* secrets
* API keys
* access tokens
* private customer records
* credentials
* source code
* repository internals that are not needed to map the customer experience

Private brief input must be UTF-8 text. Empty input, null bytes, unsupported control characters, and input above `100,000` bytes are rejected.

## Repository and GitHub boundary

The CLI does not ask for GitHub OAuth, repository tokens, repository cloning, or repository access.

If a coding agent already has repository access, it may prepare a bounded, non-secret brief. Custory only receives what you pass through `--brief` or `--stdin`.

That boundary is important. A customer journey needs product and customer context, not broad repository access.

## JSON and logs

Use `--json` for machine-readable output.

With `--json`, stdout is reserved for one JSON document. Progress and diagnostics are written to stderr.

Do not paste raw logs into public issues if they include private product context. Before sharing output with support, remove workspace IDs, journey IDs, private brief text, and anything that looks like a token.

## MCP workspace scoping

MCP installation creates a workspace-scoped credential for the selected client.

Use one client installation per workspace and machine when practical. This makes revocation and auditing simpler.

If a machine, client, or workspace is no longer trusted, uninstall and reinstall:

```bash theme={null}
custory mcp uninstall --client codex
custory mcp install --client codex --workspace "Acme"
```

## Stored-write verification

For journey creation, the CLI verifies important writes by reading the stored journey back from Custory.

Verification checks the saved structure, not the truth of every recommendation. Your team should still review stages, steps, personas, and items against real customer evidence.

## Report a security concern

If you believe you found a security issue, contact Custory support through the support link in the docs navigation or the Custory community channel.

Include the CLI version, command category, safe error code, and redacted `custory doctor` output when relevant. Do not include tokens, credentials, private briefs, authorization headers, or private customer data.

## Next step

Read [Coding agents and MCP](/cli/agents-and-mcp) for the recommended agent trust boundary, or [Automation and JSON](/cli/automation) for safe scripting patterns.
