---
title: "Patch Project Settings"
method: PATCH
path: "/projects/{project_id}/settings"
---

# Patch Project Settings

`PATCH /projects/{project_id}/settings`

## Request

- Base URL: `https://usemeridian.us` (the document declares no server; this is the origin it was published from)
- URL: `https://usemeridian.us/projects/{project_id}/settings`
- Auth: none declared

Update persisted per-project dashboard settings.

## Path parameters

- `project_id` string, required

## Request body

- ProjectSettingsPatch: Body for PATCH /projects/{id}/settings.
  - `max_pinned_decisions` integer, nullable
  - `executor_config` ExecutorConfig: Per-project executor defaults injected into executor sessions.
    - `repo_path` string, nullable
    - `repo_paths` object[], nullable
    - `env_file` string, nullable
    - `test_cmd` string, nullable
    - `test_min` integer, nullable
    - `deploy_cmd` string, nullable
    - `shell_type` string, nullable
    - `branch` string, nullable
  - `hitl_auto_answer` integer, nullable
  - `auto_worktrees` integer, nullable
  - `require_merge_approval` integer, nullable
  - `code_intel_enabled` integer, nullable
  - `execution_mode` 'autonomous' | 'interactive', nullable
  - `use_mode` 'standard_publication' | 'commercialized', nullable

## Response `200`

Successful Response

- ProjectSettings: Persisted per-project settings shown in the dashboard.
  - `project_id` string, required
  - `max_pinned_decisions` integer: Warn when the live constitution reaches this many items.
  - `executor_config` ExecutorConfig: Per-project executor defaults injected into executor sessions.
    - `repo_path` string, nullable
    - `repo_paths` object[], nullable
    - `env_file` string, nullable
    - `test_cmd` string, nullable
    - `test_min` integer, nullable
    - `deploy_cmd` string, nullable
    - `shell_type` string, nullable
    - `branch` string, nullable
  - `hitl_auto_answer` integer: HITL auto-answer mode: 0=off, 1=safe (executor questions only, no destructive keywords), 2=aggressive (everything except correction + security-sensitive requests).
  - `auto_worktrees` integer: 0716c9e0: suggest git worktree on claim_sprint_item (default ON).
  - `require_merge_approval` integer: 0716c9e0/e7548587: merge-approval mode for completing an item with an active worktree. 0=off (no check), 1=advisory (warn via HITL, proceed — default), 2=strict (BLOCKS completion on a genuine active, unmerged worktree unless explicitly overridden with override_merge_approval + a reason).
  - `code_intel_enabled` integer: Sprint-2/3: show codebase-memory-mcp install URL in dashboard and agent guidance.
  - `execution_mode` 'autonomous' | 'interactive': ecf69de8: executor posture. 'autonomous' (default) claims and runs sprint items immediately; 'interactive' asks for direction before executing.
  - `use_mode` 'standard_publication' | 'commercialized': Rights-gate use mode. 'standard_publication' (default) stores link-only images with credit and a review flag. 'commercialized' refuses their image bytes unless a human approves an override.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/usemeridian/apis/meridian.md) · [All operations](https://skmtc.dev/usemeridian/apis/meridian/llms.txt) · [OpenAPI document](https://skmtc.dev/usemeridian/apis/meridian/revisions/f37a894bd374?raw)
