/config Command
Overview
/config is a restricted configuration write interface available from the chat window. Its goal is not to turn the chat window into an arbitrary JSON editor, but to:
- Allow a well-defined set of configuration fields to be modified safely.
- Reject unsupported or non-existent fields.
- Keep
config.jsonstructurally stable and verifiable.
For the complete list of all configuration fields (including those not exposed via /config), see Configuration Reference.
Show configuration
/configReturns the whitelist of configuration paths that can be modified via chat. No arguments required.
Get a value
There is no explicit /config get command. Use /config to see the current whitelist, and consult the Configuration Reference for field descriptions and defaults. The /status command shows the current session state.
Set a value
/config set <path> <value>Examples:
/config set channel.replyMode final
/config set logging.level debug
/config set transport.permissionMode approve-reads
/config set workspaces.backend.description backend repo
/config set transport.sessionInitTimeoutMs 30000Currently supported paths
Fixed fields:
transport.typetransport.commandtransport.sessionInitTimeoutMstransport.permissionModetransport.nonInteractivePermissionstransport.permissionPolicylogging.levellogging.maxSizeByteslogging.maxFileslogging.retentionDayschannel.replyModelanguage
Dynamic fields (the named target must already exist):
agents.<name>.driveragents.<name>.commandworkspaces.<name>.cwdworkspaces.<name>.description
Performance logging (
logging.perf.*) is not on the/config setwhitelist. To enable it, edit~/.xacpx/config.jsondirectly and restart the daemon — the perf tracer is bound at startup.
Feishu credentials and multi-channel config are best managed from the terminal:
xacpx channel add feishu.
Delete a value
/config does not expose a delete operation. To remove a field, edit ~/.xacpx/config.json directly. For removing agents or workspaces, use the dedicated commands:
/agent rm <name>
/workspace rm <name>Safety rules
1. Whitelist-only paths
Any path not in the list above is rejected:
/config set transport.missing x
→ "This configuration path is not supported"2. Dynamic items must already exist
The following paths require the named target to exist first:
agents.<name>.*— the agent named<name>must be registered.workspaces.<name>.*— the workspace named<name>must exist.
Attempting to set a field on a non-existent agent or workspace returns an error; xacpx does not auto-create them. Use /agent add or /ws new first.
3. Type validation
Each path validates its value against the expected type:
| Path | Accepted values |
|---|---|
channel.replyMode | stream, final, verbose |
transport.permissionMode | approve-all, approve-reads, deny-all |
transport.nonInteractivePermissions | deny, fail |
logging.maxFiles | Positive integer |
logging.maxSizeBytes | Positive integer |
logging.retentionDays | Positive integer |
transport.sessionInitTimeoutMs | Positive integer |
4. Changes are persisted immediately
A successful /config set call:
- Updates the in-memory configuration.
- Writes the change to
~/.xacpx/config.json.
This is a real, persistent configuration change — not a temporary session override.
Examples
/config set channel.replyMode final # change the global default reply mode
/config set logging.level debug # enable debug logging
/config set transport.permissionMode approve-reads
/config set transport.sessionInitTimeoutMs 60000
/config set agents.codex.driver codex
/config set workspaces.backend.description backend mono-repoRelationship with other commands:
| What you want | Use |
|---|---|
| Change the global reply mode default | /config set channel.replyMode <value> |
| Override reply mode for the current session only | /replymode <value> |
| Clear the current-session override | /replymode reset |
| Add a new agent | /agent add <name> |
| Delete an agent | /agent rm <name> |
| Add a new workspace | /ws new <name> -d <path> |
| Delete a workspace | /workspace rm <name> |
| Edit fields not in the whitelist | Edit ~/.xacpx/config.json directly |
/config is intentionally not a general JSON editor. Only high-frequency, safely validatable fields are exposed. Everything else requires direct file editing and a daemon restart.