> For the complete documentation index, see [llms.txt](https://developer.celigo.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.celigo.com/cli/commands/config.md).

# config

Manage CLI-wide configuration — read, write, and inspect the settings stored in `~/.celigo/config.json` for the selected profile, plus the machine-wide settings.

**Note**: `config` commands are LOCAL. They do not call the REST API.

```
celigo config <subcommand> [args] [flags]
```

Supports all [global flags](/cli/getting-started/global-flags.md). `config` reads and writes the **selected profile** — `--profile`, else `CELIGO_PROFILE`, else the active profile; pass `--profile <name>` before the subcommand to target a different one. `config set … --profile <name>` also creates a profile that does not exist yet: the `config` commands are exempt from the check that fails every other command on an unknown profile name. Values are persisted to `~/.celigo/config.json` (mode `0600`).

Two kinds of key exist. **Per-profile keys** — `api_token`, `base_url`, `default_format` (`json` | `table`), `mode` (`read` | `operate` | `full`), `account_alias`, `list_fields` (`all` | `default`) — belong to one profile. **Machine-wide keys** — `auto_update`, `skills_auto_install`, `skills_auto_install_exclude`, `specs_auto_update` — belong to the installation (one CLI install per machine), live in a top-level `settings` object, and reject `--profile`. What each key does is in the [configuration guide](/cli/getting-started/configuration.md).

***

## Subcommands

| Subcommand          | Purpose                                                                                      |
| ------------------- | -------------------------------------------------------------------------------------------- |
| `show`              | Dump the selected profile's configuration (tokens redacted), plus the machine-wide settings. |
| `get <key>`         | Print one configuration value.                                                               |
| `set <key> <value>` | Write one configuration value.                                                               |

***

## `celigo config show`

Prints every stored field for the selected profile, plus the machine-wide settings. Any key containing `token` is redacted. Output respects `--format` / `--jq`.

**Signature**

```bash
celigo config show
```

**Arguments**

None.

**Flags**

None (beyond global flags).

**Example**

```bash
celigo config show
celigo --profile ci config show --format json
```

***

## `celigo config get`

Prints the stored value for one key. If the key is unset, prints `<key>: (not set)`. `api_token` is redacted on output.

**Signature**

```bash
celigo config get <key>
```

**Arguments**

| Argument | Type   | Required | Description                                                                                                                                                                                                             |
| -------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<key>`  | string | Yes      | A per-profile key (`api_token`, `base_url`, `default_format`, `mode`, `account_alias`, `list_fields`) or a machine-wide key (`auto_update`, `skills_auto_install`, `skills_auto_install_exclude`, `specs_auto_update`). |

**Flags**

None (beyond global flags).

**Example**

```bash
celigo config get api_token
celigo config get base_url
celigo --profile ci config get mode
```

***

## `celigo config set`

Writes one key/value pair to the selected profile, or — for a machine-wide key — to the installation. `mode`, `list_fields`, and the `true`/`false` keys are validated against their allowed sets; other values are stored as provided. The stored value is echoed back on success (with `api_token` redacted).

**Signature**

```bash
celigo config set <key> <value>
```

**Arguments**

| Argument  | Type   | Required | Description                                                                                                                                                                                                                                                                                    |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<key>`   | string | Yes      | A per-profile key (`api_token`, `base_url`, `default_format`, `mode`, `account_alias`, `list_fields`) or a machine-wide key (`auto_update`, `skills_auto_install`, `skills_auto_install_exclude`, `specs_auto_update`).                                                                        |
| `<value>` | string | Yes      | New value. `mode` must be `read`, `operate`, or `full`; `list_fields` must be `all` or `default`; `auto_update`, `skills_auto_install`, and `specs_auto_update` must be `true` or `false`; `skills_auto_install_exclude` is a comma-separated list of skill names (an empty string clears it). |

**Flags**

None (beyond global flags).

**Example**

```bash
celigo config set api_token <bearer-token>
celigo config set base_url https://api.eu.integrator.io
celigo config set default_format table
celigo config set mode operate
celigo config set account_alias acmecorp          # this account's MCP alias, for the local tree
celigo config set list_fields all                 # complete documents from every list command

# Machine-wide settings (no --profile)
celigo config set auto_update false
celigo config set specs_auto_update false         # no daily refresh of the `celigo lint` schema pack

# Target another profile — or create one that does not exist yet
celigo --profile ci config set default_format json
celigo --profile new-account config set api_token "<paste>"
```

***

## Gotchas

1. **Valid keys are fixed.** The six per-profile keys and the four machine-wide keys above are the whole set; any other key is refused as unknown, naming the valid ones.
2. **Writes target one profile at a time.** With no `--profile` flag and no `CELIGO_PROFILE`, `config set` writes to the active profile. To update a different profile, put `--profile <name>` before the `config` subcommand. A machine-wide key with `--profile` is an error.
3. **No `config unset`.** Overwrite with the desired value, or delete the profile with `celigo profile delete <name>` and recreate it.
4. **Tokens are redacted on read, not on write.** `config set api_token <value>` stores the raw token but prints a redacted form; `config get api_token` and `config show` always redact.
5. **`mode` is validated.** Any value other than `read`, `operate`, or `full` is rejected before it reaches the config file.
6. **Env vars and CLI flags override the file.** `CELIGO_API_TOKEN`, `CELIGO_BASE_URL`, `CELIGO_FORMAT`, `CELIGO_MODE`, `CELIGO_ACCOUNT_ALIAS`, and the equivalent `--token` / `--base-url` / `--format` / `--profile` flags take precedence at runtime — writing to the config file does not clear them. `celigo config set mode` changes nothing while `CELIGO_MODE` is exported; the refusal says so (`Current mode: read (from CELIGO_MODE) …`).
7. **Unknown top-level keys survive.** Since celigo-cli 2026.9.1, profile and config writes round-trip config keys they do not understand (a `settings` block written by a newer CLI, keys from other tooling) instead of erasing them.

## Related

* [profile](/cli/commands/profile.md) — create, switch, and delete the named profiles that `config` operates on.
* [configuration guide](/cli/getting-started/configuration.md) — full reference for the config file schema, environment variables, and precedence rules.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developer.celigo.com/cli/commands/config.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
