diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 8c7773bf..b154759d 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -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" diff --git a/CHANGELOG.md b/CHANGELOG.md index 23279e44..ab561285 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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. @@ -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 @@ -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 @@ -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` @@ -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` @@ -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` @@ -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 @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` @@ -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` diff --git a/docs/settings-reference.md b/docs/settings-reference.md index 2ded6db2..52177579 100644 --- a/docs/settings-reference.md +++ b/docs/settings-reference.md @@ -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 { diff --git a/package.json b/package.json index a9250ca2..aa2ef543 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cc-settings", - "version": "15.97.0", + "version": "15.98.0", "private": true, "type": "module", "engines": { diff --git a/plugin.json b/plugin.json index 7f0cdc94..6e9c2fbb 100644 --- a/plugin.json +++ b/plugin.json @@ -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", diff --git a/src/setup.ts b/src/setup.ts index da4a68e7..a6b7cf78 100644 --- a/src/setup.ts +++ b/src/setup.ts @@ -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 { diff --git a/upstream/claude-code-manifest.json b/upstream/claude-code-manifest.json index 13abe5c5..8dd643f3 100644 --- a/upstream/claude-code-manifest.json +++ b/upstream/claude-code-manifest.json @@ -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", @@ -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." ] } diff --git a/upstream/codex-manifest.json b/upstream/codex-manifest.json index f903f92a..4313ee56 100644 --- a/upstream/codex-manifest.json +++ b/upstream/codex-manifest.json @@ -1,7 +1,7 @@ { - "lastScan": "2026-11-03T00:00:00.000Z", + "lastScan": "2026-11-05T00:00:00.000Z", "codexVersion": "0.166.0", - "appChangelogLastScan": "2026-11-03", + "appChangelogLastScan": "2026-11-05", "knownConfigSurfaces": [ "AGENTS.md managed block ($CODEX_HOME/AGENTS.md)", "agents/*.toml: name, description, developer_instructions, model, model_reasoning_effort, sandbox_mode",