cwp config get
shipped 1.0.0cwp config get [key] [flags]
Local only: it acts on no environment.
| Argument | What it is | Default |
|---|---|---|
[key] | dotted path, e.g. pull.uploads |
| Flag | What it does | Default |
|---|---|---|
--explain | show every layer of the chain, and which one wins | off |
--with-agent | with —dry-run on a host with no shell: install and remove the PHP agent so the plan is real | off |
Plus the shared flags --json, -v, --verbose, -q, --quiet and --dry-run.
What it does
config get prints one key, or every key, with the value and where it came
from.
A key you never wrote still has a value, because the schema has a default. A default and a written value are not the same thing, so the output distinguishes them:
✓ pull.uploads — proxy
✓ pull.scrub — true (default)
– builder.options.wp_user — not set — who ability calls run as
A single key’s value goes to stdout, so it substitutes:
cd "$(cwp config get builder.options.export_dir)"
The listing and everything else stay on stderr.
--explain says which layer a run will obey
What your file says is not always what happens: pull.uploads and
defaults.uploads are two layers of one question, and a flag beats both.
--explain prints the chain and marks the winner:
✓ pull.uploads — proxy
pull.uploads resolves to proxy from the project layer:
flag —
→ project proxy
machine —
default proxy
A key with no second layer says so rather than drawing a table for one row.
docroot lives in one place, and cwp reads it from there.
Below the chain stands the reason beside the line, when
config set or a person recorded one:
reason because: Bricks checks is_file(), B-147 | until: cwp:B-147 | since: 2026-09-05 | by: cwp config set
What it does not do
It writes nothing and contacts nothing. It accepts --dry-run and ignores it.