config.json

The full workflow configuration schema, field by field, with the defaults DevFlow ships.

.planning/config.json is created by /devflow:new-project and edited by /devflow:settings. You can also edit it directly.

The shipped defaults

{
  "mode": "yolo",
  "depth": "standard",
  "job_checker_enabled": true,
  "workflow": {
    "research": true,
    "job_check": true,
    "verifier": true,
    "auto_advance": true,
    "verifier_checkpoints": false,
    "decision_queue": false
  },
  "planning": {
    "commit_docs": true,
    "search_gitignored": false
  },
  "parallelization": {
    "enabled": true,
    "job_level": true,
    "task_level": false,
    "skip_checkpoints": true,
    "max_concurrent_agents": 3,
    "min_jobs_for_parallel": 2
  },
  "gates": {
    "confirm_project": true,
    "confirm_objectives": true,
    "confirm_roadmap": true,
    "confirm_breakdown": true,
    "confirm_job": true,
    "execute_next_job": true,
    "issues_review": true,
    "confirm_transition": true,
    "editGate": "strict"
  },
  "safety": {
    "always_confirm_destructive": true,
    "always_confirm_external_services": true
  },
  "workstreams": {
    "worktree_prefix": "../{project}-ws-",
    "branch_prefix": "df/ws-",
    "merge_strategy": "squash"
  },
  "github": {
    "enabled": false,
    "repo": "",
    "milestone_prefix": "v",
    "labels": {
      "objective": "devflow:objective",
      "in_progress": "devflow:in-progress",
      "gaps": "devflow:gaps"
    }
  },
  "awareness": {
    "cache_ttl_minutes": 10,
    "peer_stale_days": 30,
    "branch_patterns": ["feature/*", "df/*", "fix/*", "proposal/*"],
    "org_project_id": "",
    "sibling_repos": [],
    "eden_libs_path": null
  },
  "daemon": {
    "notifications": false,
    "notify_on_start": true,
    "notify_on_complete": true,
    "auto_launch": false,
    "multi_project": false,
    "cross_shell": [],
    "status_line": false
  }
}

Top-level

FieldValuesDefaultMeaning
modeinteractive / yolo / autonomousyoloHow checkpoints behave — see below
depthquick / standard / comprehensivestandardDefault planning depth when the intent model does not override it
job_checker_enabledbooleantrueWhether plans are reviewed before execution

mode

The single most consequential setting.

Modehuman-verify checkpointsdecision checkpoints
interactivepresent to youpresent to you
yoloauto-approveauto-pick the first option
autonomousdelegated to the verifier, approved only on status: passedparked in the decision queue

human-action checkpoints stop in every mode — auth gates cannot be automated.

autonomous is stricter than interactive on verification: it demands green machine evidence, where interactive accepts a human saying “looks fine”. yolo is legacy convenience and approves without evidence at all.

workflow

FieldDefaultEffect
researchtrueRun objective-researcher before planning. Turn off on familiar ground — a real saving.
job_checktrueRun job-checker on plans before execution.
verifiertrueRun verifier after execution. Keep this on.
auto_advancetrueMove to the next job without asking.
verifier_checkpointsfalseInsert checkpoints inside verification.
decision_queuefalsePark decision checkpoints instead of blocking.

planning

FieldDefaultEffect
commit_docstrueCommit .planning/ artifacts. Set false plus a .gitignore entry for sensitive work.
search_gitignoredfalseLet agents search gitignored paths.

parallelization

FieldDefaultEffect
enabledtrueMaster switch
job_leveltrueRun independent jobs concurrently. The useful one.
task_levelfalseRun tasks within a job concurrently. Off — tasks usually share files.
skip_checkpointstrueSkip checkpoints during parallel waves
max_concurrent_agents3Concurrency ceiling. Past three, wall-clock gain flattens while cost climbs.
min_jobs_for_parallel2Below this, run serially

gates

The confirm_* fields all default to true and each stops for your approval at one point in the loop. Turn them off once you trust the loop on a project.

editGate is different — it sets the severity of the gate-edits hook:

ValueBehaviour
strict (default)Deny ambient edits outside an active skill
warnWarn but allow
offDisable the gate for this project

safety

FieldDefaultEffect
always_confirm_destructivetrueConfirm before destructive operations
always_confirm_external_servicestrueConfirm before calling external services

Leave both on. They are the backstop when a plan turns out to be wrong in a way nothing else caught.

github

Opt-in, disabled by default. See the GitHub integration guide.

awareness

FieldDefaultEffect
cache_ttl_minutes10Awareness cache freshness
peer_stale_days30How long a peer branch counts as active
branch_patterns["feature/*", "df/*", "fix/*", "proposal/*"]Which branches count as work in flight
org_project_id""GitHub Projects v2 node ID for org-wide progress
sibling_repos[]Repos to include in cross-repo awareness

daemon

Settings for the devflow-watch handoff daemon. See the handoff guide.

FieldDefaultEffect
notificationsfalseOS notifications on handoff events
auto_launchfalseInstall a launchd/systemd unit
multi_projectfalseWatch more than one project
cross_shell[]Additional shells to support
status_linefalseShow a daemon indicator in the status line

Reading and writing config from the CLI

df-tools config-get <key>
df-tools config-set <key> <value>
df-tools config-ensure-section <section>

df-tools global-config get <key>     # machine-wide, ~/.claude/devflow/
df-tools global-config set <key> <value>