Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "darkroom",
"displayName": "Darkroom Engineering",
"description": "Darkroom Engineering AI coding standards. Layered config with portable AGENTS.md, progressive complexity, and two-tier knowledge system.",
"version": "15.97.0",
"version": "15.98.0",
"author": {
"name": "Darkroom Engineering",
"url": "https://darkroom.engineering"
Expand Down
57 changes: 32 additions & 25 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,14 @@ All notable changes to cc-settings are documented here.

> **Versioning** — cc-settings uses a single version number matching the installer (`src/setup.ts` `VERSION` constant, written to `~/.claude/.cc-settings-version` sentinel). Historical entries below 10.0 predate this unification; the jump from v8.x to v10.x in April 2026 realigned the product version with the installer version that was already ahead.

## [Unreleased]
## [15.98.0] — 2026-11-05

Synced with Claude Code v2.1.318 (Codex unchanged at v0.166.0). Nothing to adopt or remove this window: `docs/settings-reference.md` now notes that a `deniedMcpServers` URL entry also blocks Anthropic-provided servers whose upstream URL matches, and connectors in cloud sessions and on self-hosted runners. What a mod attaches at `prompt.submit` now stays in the person's turn, so `drift-fuse` delivers its redirect line there instead of as a system message.

**Files changed:**
- `docs/settings-reference.md`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `package.json`, `.claude-plugin/plugin.json`, `plugin.json`, `src/setup.ts` (version)

Client builds get one way to write and work tickets. Until now each person and agent wrote client tickets differently, and a first pass written in one day came out thin: parents with no criteria of their own, engineer-level criteria, the same Verify block pasted everywhere, bare Figma node IDs.

Expand Down Expand Up @@ -53,7 +60,7 @@ Sync with Claude Code v2.1.317. Claude Code started warning at every session sta
- `tests/settings-merge.test.ts`
- `docs/settings-reference.md`
- `docs/agent-models.md`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `upstream/codex-manifest.json`

## [15.95.0] — 2026-11-02
Expand All @@ -69,7 +76,7 @@ Sync with Claude Code v2.1.316. The new `CLAUDE_CODE_SUBAGENT_EFFORT` is documen
**Files changed:**
- `CLAUDE-FULL.md`
- `docs/settings-reference.md`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `upstream/codex-manifest.json`

## [15.94.1] — 2026-11-01
Expand Down Expand Up @@ -150,7 +157,7 @@ cc-settings now accepts the new `permissions.blockWritesOutsideWorkingDirectorie
- `schemas/settings.schema.json`
- `docs/settings-reference.md`
- `docs/hooks-reference.md`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `upstream/codex-manifest.json`
- `package.json`, `plugin.json`, `.claude-plugin/plugin.json`, `src/setup.ts`

Expand Down Expand Up @@ -223,7 +230,7 @@ Sync with Claude Code 2.1.312 and Codex 0.165.0. Five env vars are tracked, two
**Deletions / Native-now-redundant:** none. The 2.1.311 fix for `SubagentStop` hooks firing about twice a minute means `swarm-log.ts` now logs one stop per subagent; there was no workaround to remove. Codex 0.165.0 (GPT-6.1 Terra, memory v2 by default, Vertex provider) and the Codex app changelog touch no installer surface.

**Files changed:**
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `docs/frontmatter-reference.md`
Expand Down Expand Up @@ -378,7 +385,7 @@ Sync with Claude Code 2.1.309 and Codex 0.164.0. One new env var is tracked, two
**Deletions / Native-now-redundant:** none. Codex 0.164.0 and the Codex app changelog brought nothing that touches an installer surface.

**Files changed:**
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `package.json`, `.claude-plugin/plugin.json`, `plugin.json`, `src/setup.ts`
Expand Down Expand Up @@ -1162,7 +1169,7 @@ Sync with Claude Code v2.1.292. Codex stays at v0.160.1.
- `docs/frontmatter-reference.md`
- `docs/settings-reference.md`
- `docs/hooks-reference.md`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `package.json`, `plugin.json`, `.claude-plugin/plugin.json`, `src/setup.ts`

## [15.53.1] — 2026-10-07
Expand Down Expand Up @@ -1281,7 +1288,7 @@ Synced with Claude Code 2.1.289. Codex stays at 0.160.0. Teams behind a gateway
**Skipped:** mods and plugin API additions (tracked in `docs/plans/mods-migration.md`), LSP `requestTimeout`, the `claude purge` rename, `--max-findings`, per-model `/autocompact`, and fix-only bullets. No dedupe: the new native `rm` and deny-rule fixes overlap `safety-net.ts`, which blocks where they prompt.

**Files changed:**
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `docs/hooks-reference.md`
- `src/setup.ts`, `package.json`, `plugin.json`, `.claude-plugin/plugin.json`
Expand Down Expand Up @@ -1582,7 +1589,7 @@ Sync with Claude Code 2.1.285 and Codex 0.159.0. The TypeSafe key no longer appe
- `tests/plugin-key-stdin.test.ts`
- `src/schemas/settings.ts`
- `src/hooks/statusline.ts`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `CLAUDE-FULL.md`
Expand Down Expand Up @@ -1792,7 +1799,7 @@ Sync with Claude Code v2.1.283 and Codex v0.157.1, plus a fix for permission den
- `CLAUDE-FULL.md`
- `MANUAL.md`
- `skills/cc/SKILL.md`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `upstream/codex-manifest.json`
- `src/setup.ts`, `package.json`, `.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`

Expand Down Expand Up @@ -2392,7 +2399,7 @@ Synced with Claude Code v2.1.266 (from v2.1.260). 2.1.262 and 2.1.264 have no ch

**Files changed:**
- `src/schemas/settings.ts`, `schemas/settings.schema.json`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `skills/consolidate/SKILL.md`
- `MANUAL.md`
Expand Down Expand Up @@ -2422,7 +2429,7 @@ Synced with Claude Code v2.1.260 (from v2.1.257). 2.1.258 was two fixes; 2.1.259
**Files changed:**
- `src/schemas/settings.ts`, `schemas/settings.schema.json`
- `src/hooks/statusline.ts`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `CLAUDE-FULL.md`
- `CHANGELOG.md`, `package.json`, `.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`, `src/setup.ts`
Expand Down Expand Up @@ -2908,7 +2915,7 @@ Yes → team (competing hypotheses that should disprove each other, a review who
**Files changed:**

- `src/schemas/settings.ts`, `schemas/settings.schema.json`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `CLAUDE-FULL.md`
- `src/setup.ts`
Expand Down Expand Up @@ -3732,7 +3739,7 @@ Upstream sync with Claude Code v2.1.216–v2.1.217. One behavioral change ships
**Files changed:**
- `src/schemas/settings.ts`, `schemas/settings.schema.json`
- `config/10-core.json`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `docs/agent-models.md`
- `src/setup.ts`
Expand Down Expand Up @@ -4353,7 +4360,7 @@ Caught the schema up to upstream `2.1.181 → 2.1.183` (2.1.182 was never publis
- `src/schemas/settings.ts`, `schemas/settings.schema.json`
- `config/10-core.json`
- `docs/settings-reference.md`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `src/setup.ts`
- `CHANGELOG.md`

Expand Down Expand Up @@ -4565,7 +4572,7 @@ Upstream sync to Claude Code 2.1.169. One surface-area release — 2.1.169 adds

- `src/schemas/settings.ts`, `schemas/settings.schema.json`
- `schemas/settings.schema.json` (regenerated via `bun run schemas:emit`)
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `src/setup.ts`
- `CHANGELOG.md`
Expand All @@ -4586,7 +4593,7 @@ Upstream sync to Claude Code 2.1.168. Two of the three releases (2.1.167, 2.1.16

- `src/schemas/settings.ts`, `schemas/settings.schema.json`
- `schemas/settings.schema.json` (regenerated via `bun run schemas:emit`)
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `src/setup.ts`
- `CHANGELOG.md`
Expand All @@ -4607,7 +4614,7 @@ Upstream sync to Claude Code 2.1.165. Two of the three releases (2.1.164, 2.1.16

- `src/schemas/settings.ts`, `schemas/settings.schema.json`
- `schemas/settings.schema.json` (regenerated via `bun run schemas:emit`)
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `docs/hooks-reference.md`
- `src/setup.ts`
Expand Down Expand Up @@ -4763,7 +4770,7 @@ Upstream sync to Claude Code v2.1.160 — a cleanup-only release. v2.1.160 is al

### Files changed

- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `src/setup.ts`
- `CHANGELOG.md`
Expand Down Expand Up @@ -4971,7 +4978,7 @@ Reconcile the `Settings` zod schema with the full documented Claude Code setting
### Files changed

- `src/schemas/settings.ts`, `schemas/settings.schema.json`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `schemas/settings.schema.json`
- `tests/schemas.test.ts`
- `tests/setup.test.ts`
Expand Down Expand Up @@ -5054,7 +5061,7 @@ Gap-fill bundle adopting verified Claude Code capabilities (v2.1.117–v2.1.147)
- `src/scripts/worktree-create.ts` (new)
- `src/scripts/worktree-remove.ts` (new)
- `src/setup.ts`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `tests/schemas.test.ts`
- `tests/phase2-scripts.test.ts`
- `tests/setup-args.test.ts`
Expand Down Expand Up @@ -5092,7 +5099,7 @@ _None this cycle._ The remaining v2.1.149 bullets are upstream bug fixes (PowerS
### Files changed

- `src/schemas/settings.ts`, `schemas/settings.schema.json`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `docs/settings-reference.md`
- `src/setup.ts`
- `CHANGELOG.md`
Expand Down Expand Up @@ -5266,7 +5273,7 @@ Captive-portal startup hang (75s → 15s), terminal rendering corruption fixes (
- `skills/refactor/SKILL.md`
- `profiles/maestro.md`
- `CLAUDE-FULL.md`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `src/setup.ts`
- `CHANGELOG.md`

Expand Down Expand Up @@ -5706,7 +5713,7 @@ Two new optional hook fields adopted into the schema. Nothing removed; nothing i

- `src/schemas/hooks.ts`
- `docs/hooks-reference.md`
- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `src/setup.ts`
- `CHANGELOG.md`

Expand Down Expand Up @@ -5947,7 +5954,7 @@ Tracking-only sync. Upstream 2.1.128 is overwhelmingly bug fixes (30+) plus a ha

**Files changed:**

- `upstream/claude-code-manifest.json`
- `upstream/claude-code-manifest.json`, `upstream/codex-manifest.json`
- `src/schemas/settings.ts` (comment only)
- `src/setup.ts` (VERSION bump)
- `CHANGELOG.md`
Expand Down
2 changes: 1 addition & 1 deletion docs/settings-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -616,7 +616,7 @@ Channels are the team-distribution mechanism for plugins and managed configurati

Managed MCP server policy lists (v2.1.112). Patterns are matched against MCP server URLs / identifiers. Use for enterprise allowlisting; supports scheme wildcards (e.g., `https://*.internal.example.com`).

Since v2.1.259 these lists govern only servers **users add**: user, project, and local config, `--mcp-config`, agent frontmatter, plugins, and claude.ai connectors. Servers the organization itself delivers through `managedMcpServers` or `managed-mcp.json` bypass them. Since v2.1.305 `allowedMcpServers` also stops filtering `managed-mcp.json` stdio servers that use `${VAR}` only in `env`, while `deniedMcpServers` still blocks them, so list one there to keep it off.
Since v2.1.259 these lists govern only servers **users add**: user, project, and local config, `--mcp-config`, agent frontmatter, plugins, and claude.ai connectors. Servers the organization itself delivers through `managedMcpServers` or `managed-mcp.json` bypass them. Since v2.1.305 `allowedMcpServers` also stops filtering `managed-mcp.json` stdio servers that use `${VAR}` only in `env`, while `deniedMcpServers` still blocks them, so list one there to keep it off. Since v2.1.318 a `deniedMcpServers` URL entry also blocks Anthropic-provided servers whose upstream URL matches, and connectors in cloud sessions and on self-hosted runners, which receive the connector's own URL; anywhere else, deny a connector by name.

```json
{
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cc-settings",
"version": "15.97.0",
"version": "15.98.0",
"private": true,
"type": "module",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "darkroom",
"version": "15.97.0",
"version": "15.98.0",
"description": "Darkroom Engineering coding standards and reusable engineering workflows for Codex.",
"author": {
"name": "Darkroom Engineering",
Expand Down
2 changes: 1 addition & 1 deletion src/setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ import {

export type { InstallTarget } from "./lib/install-types.ts";

const VERSION = "15.97.0"; // /ship pushes with the detected git login and branches off main.
const VERSION = "15.98.0"; // /ship pushes with the detected git login and branches off main.
const STRICT_VERSION = /^\d+\.\d+\.\d+$/;

export function parseArgs(argv: string[]): InstallArgs {
Expand Down
7 changes: 4 additions & 3 deletions upstream/claude-code-manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"lastScan": "2026-11-03T00:00:00.000Z",
"claudeCodeVersion": "2.1.317",
"lastScan": "2026-11-05T00:00:00.000Z",
"claudeCodeVersion": "2.1.318",
"knownSettingsKeys": [
"$schema",
"additionalMarketplaces",
Expand Down Expand Up @@ -414,6 +414,7 @@
"v2.1.310\u20132.1.312 sync (2026-10-28). Adopted: CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK and CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT (2.1.312), CLAUDE_CODE_MODEL_CATALOG and CLAUDE_CODE_SYNC_SKILLS (2.1.311) and DISABLE_COMPACT tracked; none set by cc-settings. Docs only: a subagent's autoCompactWindow now lowers a CLAUDE_CODE_AUTO_COMPACT_WINDOW window (2.1.312, frontmatter-reference); ultrathink runs its turn at xhigh (2.1.311, CLAUDE-FULL.md). No dedupe: the SubagentStop double-fire fix (2.1.311) makes swarm-log.ts log one stop per subagent with no workaround to remove; the stale MEMORY.md/CLAUDE.md after compaction fix does not cover the post-compaction re-read rule, which is about edited working files. Skipped: prompt and agent hooks capped at 24 concurrent with sub-second timeouts rounded to 1s (command hooks only, no sub-second timeout), [1m] suffix dropped where it has no effect, Write refusing blind overwrites of large instruction files, oidc.user_id_claim, self-hosted-runner hold flags, Monitor on 3P providers, Bedrock/Vertex/Foundry prompt and catalog changes, MCP, rewind, TUI and retry fixes, VSCode, cloud sessions, Remote Control, Claude Tag, Code Review, Windows, Linux sandbox.",
"v2.1.313\u20132.1.314 sync (2026-10-30; 2.1.313 has no changelog entry). Adopted: permissions.blockWritesOutsideWorkingDirectories (2.1.314 \u2014 src/schemas/permissions.ts, which is strict, so the key failed parse before; documented, not set: it would block writes to ~/.claude memory, handoffs and the scratchpad). Docs only: Bash-matcher hooks now run on Monitor tool commands (2.1.314) \u2014 a probe on 2.1.314 showed the payload arrives with tool_name \"Bash\", so dispatch.ts and safety-net cover them with no code change; hook if conditions such as Monitor(tail *) match Monitor commands; PreCompact hook output is cut at 10,000 characters; FORCE_HYPERLINK=false/no/off now turns hyperlinks off. Skipped: idle compaction (VS Code and Desktop), gateway groups and guardrail_trace, claude -p exit 1 on startup failure, Bedrock/Vertex/Foundry/TLS/auth fixes, skills .trash cap, vim/paste/table fixes, CLAUDE_CODE_DISABLE_CFC_PROMPT (VS Code), Cloud, Remote Control and Claude Tag.",
"v2.1.315\u20132.1.316 sync (2026-11-02; 2.1.315 has no changelog entry). Adopted: CLAUDE_CODE_SUBAGENT_EFFORT tracked and documented in CLAUDE-FULL \"Effort and context\" (2.1.316, default effort for unpinned subagents; does not override /effort, frontmatter or the Agent tool effort; not set by cc-settings so implementers keep the session's depth). Docs only: CLAUDE_CODE_DISABLE_ULTRATHINK and CLAUDE_CODE_DISABLE_LOOPED_CROSS_CERT_DROP tracked (2.1.316). No dedupe. Skipped: Opus 4.8 fast-mode deprecation (session default is Opus 5.5; fastModePerSessionOptIn is model-independent), autoMode.allow $defaults changes (cc-settings sets no autoMode.allow), PowerShell hook exit-2 fix (bun hooks), subagent model-on-wake fix, /model warning, Bash alias and SHELLOPTS fixes, /diff, SSL messages, server-managed settings, gateway, self-hosted runner, VSCode, cloud, Claude Tag, Code Review.",
"v2.1.317 sync (2026-11-03). Adopted: allow rules Read(*)/Edit(*)/Grep(*) replaced by bare Read/Edit/Grep in config/30-permissions.json, and RETIRED_ALLOW_RULES in settings-merge.ts prunes the old forms from existing installs' allow arrays (deny/ask untouched). Claude Code now reads (*) on path-scoped tools as working-directories-only and warns at startup; the warning is not in the 2.1.317 changelog and says it can be turned off, so it is a flagged rollout. Docs only: CLAUDE_CODE_DISABLE_NESTED_SESSION_ID tracked (self-hosted runner); subagents on another model now use that model's saved effort level, noted in docs/agent-models.md. No dedupe: settings-hook onFailure was modelled in 2.1.295, the new entry is Agent SDK callbacks only. Skipped: Read unchanged-file stub removal (nothing relied on it), account-email network check (behavior only), OTel anthropic.* attributes, gateway cost API and IdP log, UI notices, Windows/VSCode/cloud/Remote Control/runner fixes, and the remaining bug fixes."
"v2.1.317 sync (2026-11-03). Adopted: allow rules Read(*)/Edit(*)/Grep(*) replaced by bare Read/Edit/Grep in config/30-permissions.json, and RETIRED_ALLOW_RULES in settings-merge.ts prunes the old forms from existing installs' allow arrays (deny/ask untouched). Claude Code now reads (*) on path-scoped tools as working-directories-only and warns at startup; the warning is not in the 2.1.317 changelog and says it can be turned off, so it is a flagged rollout. Docs only: CLAUDE_CODE_DISABLE_NESTED_SESSION_ID tracked (self-hosted runner); subagents on another model now use that model's saved effort level, noted in docs/agent-models.md. No dedupe: settings-hook onFailure was modelled in 2.1.295, the new entry is Agent SDK callbacks only. Skipped: Read unchanged-file stub removal (nothing relied on it), account-email network check (behavior only), OTel anthropic.* attributes, gateway cost API and IdP log, UI notices, Windows/VSCode/cloud/Remote Control/runner fixes, and the remaining bug fixes.",
"v2.1.318 sync (2026-11-05). No adoption or dedupe. Docs only: deniedMcpServers URL entries now also block Anthropic-provided servers whose upstream URL matches, and connectors in cloud sessions and self-hosted runners (docs/settings-reference.md). Noted, no edit: what a mod attaches at prompt.submit now stays in the user turn instead of a system message, which changes how drift-fuse delivers its redirect line but not whether it does. Skipped: $.model.fork effort (no mod forks), sign-in expiry fields and the claude -p stderr warning (our -p callers read stdout), claude plugin/mcp lock and token-refresh fixes (reach the installer with no change), IDE extension no longer auto-installed, gateway/runner/Remote Control/VSCode/cloud/Claude Tag/Code Review entries, and the remaining bug fixes."
]
}
Loading
Loading