ds-config ยท diff
git:20260803.ae08a61 to git:20260808.703818a
6 added, 6 removed. Audit A to A.
---
name: ds-config
description: "Interactive command to view and change agentic-engineering settings in-session."
user-invocable: true
---
# /ds-config
Interactive command to view and change agentic-engineering settings in-session.
Reads the current resolved state, prompts for which setting to change and the
new value, writes the correct file, and confirms what changed and when it takes
effect.
- Implementation: `bin/agentic-config` (Python 3 stdlib; reuses resolver logic
- from `bin/agentic-status`).
+ Implementation: `bin/ds-config` (Python 3 stdlib; reuses resolver logic
+ from `bin/ds-status`).
## Usage
```
/ds-config
```
No subcommands or flags. Selection is done interactively.
## Behavior
1. **Resolve and display current settings.** Reads `~/.claude/agentic-engineering.json`
(mode, profile), the project AGENTS.md markers, and `.agentic/config.json` (toggles).
Displays each setting with its current value and source (global / project / marker).
Reuses the same resolver as `/ds-status` so the two commands never diverge.
2. **Setting selection prompt.** Grouped:
- Activation and profile settings (mode, profile) - write to `~/.claude/agentic-engineering.json`
or AGENTS.md marker, depending on scope prompt.
- Project toggles from `.agentic/config.json`: `auto_merge_on_ci_green`,
`commit_telemetry`, `capability_preflight_mode`, `abdication_guard_enabled`,
`ticket_driven`, `pending_merge_sweep`, `tracker_state_diagnostic`, `turn_shape_guard_enabled`, and any additional config-file toggles.
3. **Value selection prompt.** Lists valid values for the chosen setting, with the
current default marked. For boolean toggles: `true / false`. For enumerated
settings: the full set (e.g. `off / offer / require` for `ticket_driven`).
4. **Scope prompt (mode and profile only).** When the chosen setting can live in
more than one place, prompt: apply globally (`~/.claude/agentic-engineering.json`)
or to this project only (AGENTS.md marker / `.agentic/config.json`). Default =
project when running inside a git repo.
5. **Write the file.** Atomic write (tmp + rename) for JSON files. For AGENTS.md
markers, appends or updates the relevant `agentic-engineering-profile:` line.
Honors the preset-over-profile precedence rule when writing profile changes.
6. **Confirm and state effect timing.**
- Activation-time settings (mode, profile) take effect **at the next session
start** - the command says this explicitly.
- Project toggle changes (`.agentic/config.json`) take effect at the next session
start.
- Env kill-switch equivalents cannot be applied to the already-running session;
the command prints the exact `export <VAR>=1` line for the operator to use.
7. **Loop or exit.** After each change, offer to change another setting or exit.
## Settings coverage
**File-settable (full support):**
| Setting | Key | File |
|---|---|---|
| Mode | `mode` | `~/.claude/agentic-engineering.json` |
| Profile | `profile` | `~/.claude/agentic-engineering.json` or AGENTS.md |
| Auto-merge on CI | `auto_merge_on_ci_green` | `.agentic/config.json` |
| Commit telemetry | `commit_telemetry` | `.agentic/config.json` |
| Capability preflight | `capability_preflight_mode` | `.agentic/config.json` |
| Abdication guard | `abdication_guard_enabled` | `.agentic/config.json` |
| Ticket-driven | `ticket_driven` | `.agentic/config.json` |
| Pending-merge sweep | `pending_merge_sweep` | `.agentic/config.json` |
| Tracker state diagnostic | `tracker_state_diagnostic` | `.agentic/config.json` |
| Turn-shape guard | `turn_shape_guard_enabled` | `.agentic/config.json` |
**Env kill-switches (print-only, not applied to running session):**
`AE_SINGULARITY_GUARD_DISABLE`, `AE_TIER_GUARD_DISABLE`, `AGENTIC_QUIET`.
When an equivalent config toggle exists (e.g. `abdication_guard_enabled`
covers `AE_ABDICATION_GUARD_DISABLE`), offer to set that instead.
- **Out of scope:** identity (owned by `/ds-identity`), tracker config (owned by `agentic-tracker`), `team.yml`
+ **Out of scope:** identity (owned by `/ds-identity`), tracker config (owned by `ds-tracker`), `team.yml`
(v1 deferral), AGENTS.md source-of-truth conflicts across multiple nested files.
## `mode opt-in` footgun handling
Setting `mode` to `opt-in` in `~/.claude/agentic-engineering.json` is the one
setting that silently disables the methodology on every project that lacks an
`agentic-engineering: opt-in` marker in its AGENTS.md - which is most projects.
This is the opposite of the intent when a user just wants "tighter control".
- **Pre-write gate (LLM layer).** Before invoking `bin/agentic-config mode opt-in`,
+ **Pre-write gate (LLM layer).** Before invoking `bin/ds-config mode opt-in`,
warn the user that:
- `opt-in` mode makes the methodology inactive by default in all repos.
- Any project without `agentic-engineering: opt-in` in its AGENTS.md will
silently stop using the methodology after this change.
- The safer alternative for project-level control is to add an opt-out marker
to the specific project (`/ds-disable`) rather than switching the global
default.
Confirm that the user wants to proceed. Only invoke the binary after confirmation.
Do not run the binary speculatively - the binary writes the file immediately on
invocation and prints its warning only after the write is committed.
- If the user confirms, invoke `bin/agentic-config mode opt-in`. The binary also
+ If the user confirms, invoke `bin/ds-config mode opt-in`. The binary also
prints a post-write reminder listing the affected repos (any repo without an
opt-in marker), but the LLM-layer gate is the primary safety check.
## Effect timing
Settings that write to `~/.claude/agentic-engineering.json` or `.agentic/config.json`
take effect at the **next session start**. The command confirms this explicitly
after each write. No restart is required for env kill-switch exports (those apply
to the current shell session when set before launching Claude).
- ## Exit codes (bin/agentic-config)
+ ## Exit codes (bin/ds-config)
- `0` - change applied successfully or operator chose to exit without changes
- `1` - I/O error (read-only file, permission denied, malformed JSON)
- `2` - operator aborted at confirmation prompt (no files modified)