ds-config · git:20260803.ae08a61 · 2026-08-03 · sha256 316ccf2deed8ff55

ds-config git:20260803.ae08a61A

Immutable. This exact content never changes and is served at /api/v1/blob/316ccf2deed8ff55.

---
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`).

## 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`
(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`,
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
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)

- `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)