ALL MEMOS Download .docx

Claude Code Audit — 2026-04-24 00:27 UTC

Cycle: 8th audit of this cadence (first-of-day 00:17 local = 00:27 UTC; every-6-hours schedule)

Auditor: SCOUT (TITAN research agent)

Baseline: F:/TITAN/plans/advisors/CLAUDE-CODE-ARCHITECTURE-DEEP-DIVE-2026-04-22.md

Prior audit: F:/TITAN/plans/advisors/claude-code-audit-2026-04-23-2230.md (v2.1.118, 0 regressions)

CC version at prior audit: v2.1.118

CC version this cycle: v2.1.119 (released 2026-04-23T23:24 UTC — one new version since last audit)

Local TITAN install: v2.1.49 (70-version gap now; T030 still open)

Word count: ~2,100

---

1. CC Version Delta Since Prior Audit (22:30 UTC Apr 23 → 00:27 UTC Apr 24)

One new release this cycle: v2.1.119 (April 23, 23:24 UTC — 54 minutes after prior audit concluded).

v2.1.119 — Full Change Inventory

Source: github.com/anthropics/claude-code/releases and raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/CHANGELOG.md, both fetched 2026-04-24.

Hook system additions:

MCP changes:

Permission model addition:

Settings architecture:

New setting:

OpenTelemetry additions:

Native builds (macOS/Linux):

Bug fixes with architectural relevance:

Confirmed latest version: v2.1.119 as of 2026-04-23T23:24 UTC. No v2.1.120 or higher visible on GitHub releases page (fetched 2026-04-24T00:27 UTC).

---

2. Cumulative Version Ladder (Baseline to This Cycle)

| Version | Date | Key Architectural Signal |

|---------|------|--------------------------|

| v2.1.94 | Apr 7 | Default effort raised to high for API/Bedrock/Enterprise users |

| v2.1.98 | Apr 9 | Bash security hardening; deny overrides hook "ask"; Monitor tool |

| v2.1.101 | Apr 10 | /team-onboarding; subprocess PID namespace sandboxing; Vertex AI wizard |

| v2.1.105 | ~Apr 13 | PreCompact block support; plugin monitors key; skill description cap 1,536 chars |

| v2.1.108 | Apr 14 | ENABLE_PROMPT_CACHING_1H; /recap session rehydration; Skill/command unification |

| v2.1.111 | Apr 16 | Opus 4.7 xhigh effort; /ultrareview parallel multi-agent review |

| v2.1.113 | Apr 17 | Native binary CLI replaces bundled JS; sandbox.network.deniedDomains |

| v2.1.117 | Apr 22 | CLAUDE_CODE_FORK_SUBAGENT=1; mcpServers in agent frontmatter |

| v2.1.118 | Apr 23 | Hooks invoke MCP tools directly (type: "mcp_tool"); named themes; /usage unifies /cost+/stats |

| v2.1.119 | Apr 23 | duration_ms in hooks; /config persists to settings.json; parallel MCP connect; async hook transcript fix |

Source: github.com/anthropics/claude-code/releases + code.claude.com/docs/en/whats-new (both fetched 2026-04-24).

---

3. Local ~/.claude/ Scan — State vs. Prior Audit

Settings.json (C:/Users/Harnoor/.claude/settings.json) — v2.1.119 behavioral impact:

The /config persistence change in v2.1.119 is a new risk surface for TITAN. The current settings.json is carefully managed and version-tracked. After T030 ships (binary update to v2.1.119), any /config change made interactively during a TITAN session will permanently modify settings.json. This was NOT the prior behavior. Recommendation: add a comment to TITAN's CLAUDE.md reminding operators not to use /config for temporary session tuning after the binary update; use direct settings.json edits instead, which are version-tracked.

Plugins directory (C:/Users/Harnoor/.claude/plugins/):

The marketplace cache (install-counts-cache.json) was last fetched 2026-03-18 — over 5 weeks old. The marketplace has grown significantly (80+ plugins now catalogued vs. the count at baseline). Notable new entries not present at baseline that are relevant to TITAN's workflow:

No new TITAN-authored skills, MCP servers, or hooks since the 22:30 cycle. The plugin marketplace cache date (2026-03-18) predates all prior audits and has not been refreshed. plugin install-counts-cache.json is the only new artifact vs. baseline — it was presumably populated when CC first downloaded the marketplace catalog.

---

4. Silent Infinity — Regression Check (Full 14-Pattern Audit)

No SI code was shipped between the 22:30 audit and this cycle. The regression table is unchanged from the prior cycle. For completeness:

| # | Pattern | CC Status | SI Status | Delta |

|---|---------|-----------|-----------|-------|

| 1 | Memory layering (hot/warm/cold) | MEMORY.md file-tiered | ALIGNED (DDB-tiered, hot/warm/cold + recap) | No change |

| 2 | System prompt layering (conditional stack) | 6-layer conditional | ALIGNED (versioned + variant + user context injection) | No change |

| 3 | Structured tool use (schema-validated) | 50 tools, JSON Schema | GAP — internal capabilities in prose instructions, not formal tools | No change (T025 open) |

| 4 | Sub-agent orchestration | Forked workers, summary-only return | PARTIAL — Chat Sentinel is a primitive sub-agent; no parallel workers | No change |

| 5 | Verification-before-claim | Harness validates tool results | ALIGNED — system prompt discipline instruction shipped (R0161) | No change |

| 6 | Plan mode / reflective pause | Shift+Tab read-only posture | PARTIAL — contemplative pause exists in persona; no explicit pause mode | No change |

| 7 | Correction-as-memory | Live feedback → persistent memory | ALIGNED — extract_correction() → memory.put_correction() wired (T017 closed) | No change |

| 8 | Skill auto-invocation (domain injection) | Semantic match, lazy-load | GAP — highest unaddressed felt-intelligence gap (T025 open, 0.75 days) | No change |

| 9 | Session transcript rehydration | JSONL + /recap + /fork | PARTIAL — recap wired (T021 closed); no fork endpoint | No change |

| 10 | Interruptible streaming (barge-in) | ESC mid-stream, partial transcript | PARTIAL — SSE abort at Lambda level; no client-side interrupt UX | No change |

| 11 | Memory compaction (graduated pipeline) | 5-layer cheapest-first | ALIGNED — 2-layer compaction in conversation_store.py (T016 closed) | No change |

| 12 | Permission / guardrail model (deny-first) | 8-layer deny-first | ALIGNED — guardrails.py + Haiku behavioral classifier layer | No change |

| 13 | Pre-session briefing (context injection) | SessionStart hook + CLAUDE.md user msg | ALIGNED — memory_block injected as late user message (T014 closed) | No change |

| 14 | Parallel tool calls | StreamingToolExecutor concurrent | GAP — single-threaded Lambda; no parallel sub-task concept | No change |

Regressions this cycle: 0. No SI code changes since prior audit.

Confirmed persistent gaps: 3 — structured tool use (P3), skill auto-invocation (P8, highest priority), session fork endpoint (P7 partial).

New v2.1.119 relevance for SI:

The /config persistence change does not affect SI (SI has no CC install). The MCP parallel connect improvement is not applicable (SI uses no MCP servers). The PowerShell auto-approval is Windows-specific and irrelevant to Lambda. The duration_ms hook field is a TITAN-specific opportunity (see Rec P below).

---

5. Top 3 Recommendations This Cycle

Next unclaimed T-numbers are T034, T035, T036.

---

Rec P — Exploit duration_ms in PostToolUse Hooks for TITAN Performance Baseline

What. Update titan-metrics.py (the PostToolUse hook on Write|Edit|Bash|Read|Glob|Grep|WebSearch|WebFetch) to read and log the new duration_ms field from the hook input payload (v2.1.119).

Why. Prior audits (Rec O, T033) identified that TITAN's synchronous titan-injection-scan.py may be adding 50-150ms latency on high-frequency Read calls. Currently there is no empirical basis for that estimate — it is inference. The new duration_ms field gives TITAN the actual tool execution time from the harness. By logging duration_ms per tool type to a metrics file (e.g., F:/TITAN/knowledge/metrics/tool-latency.jsonl), TITAN can build a real baseline of where session latency is being spent. This turns the T033 recommendation from "likely slow" to "measured slow" — or falsifies the concern entirely.

Implementation: read hook_data["duration_ms"] from stdin JSON in titan-metrics.py and append {tool, duration_ms, timestamp, session_id} to the metrics log. Already has async: true on most matchers — zero latency impact. 30-minute change.

Requires T030 first (binary update to v2.1.119 for the field to be present; prior to T030 the field is absent and the code should handle None gracefully).

Blast radius: F:/TITAN/scripts/titan-metrics.py only. New metrics log file. Zero SI impact.

Effort: 30 minutes.

Priority: LOW — do after T030 (binary update). Blocks T033 empirical validation.

Source: CC v2.1.119 CHANGELOG (duration_ms addition); C:/Users/Harnoor/.claude/settings.json (read 2026-04-24).

---

Rec Q — Refresh Plugin Marketplace Cache and Install hookify + claude-md-management

What. Run claude plugin update --all after T030 to refresh the marketplace cache (currently stale from 2026-03-18, 37 days old). Install two plugins immediately:

1. hookify@claude-plugins-official — guided hook design, directly applicable to TITAN's 9-hook config.

2. claude-md-management@claude-plugins-official — CLAUDE.md quality auditing, useful for the quarterly context-economy audit.

Why. TITAN has a mature hook system (9 hooks, 6 event types, ~5 Python scripts) but no structured tooling for auditing or improving that config. The hookify plugin ships a conversation-analyzer subagent that reads session transcripts and recommends hook optimizations — exactly the type of analysis T026 and T033 require. Installing it would make that analysis self-executing on demand.

The claude-md-management plugin ships a claude-md-improver skill with quality criteria and update guidelines for CLAUDE.md files. TITAN's CLAUDE.md is now ~200 lines; the plugin could automate the "lean-ness" check specified in the Operating Contract.

Both plugins are read-only behavioral additions — they ship skills and commands, not hooks or code that runs automatically. Zero risk of unintended side effects.

Requires T030 first (binary update needed for plugin install to work correctly against current marketplace).

Blast radius: New plugin directories in ~/.claude/plugins/. Zero settings.json changes. Zero SI impact.

Effort: 10 minutes (post T030).

Priority: LOW — bundle with T030 smoke test.

Source: C:/Users/Harnoor/.claude/plugins/install-counts-cache.json (read 2026-04-24); CC plugin marketplace catalog.

---

Rec R — Add /config Drift Guard to TITAN CLAUDE.md (v2.1.119 Behavioral Change)

What. Add a single line to TITAN's CLAUDE.md (in the appropriate rules section) documenting the v2.1.119 behavioral change: /config settings now persist permanently to settings.json. The note should read: "Do not use /config for temporary session tuning. Use direct settings.json edits (tracked in git) instead. /config changes are now permanent as of v2.1.119."

Why. Before v2.1.119, /config was session-scoped — it was safe to use for quick in-session tweaks that would be discarded at session end. After v2.1.119, every /config invocation writes to settings.json. TITAN's settings.json is carefully structured and manually reviewed. An unintended /config write could silently modify hook configurations, timeout values, or permission modes. Since T030 (binary update) will bring TITAN to v2.1.119, this documentation change should precede or accompany T030.

This is a 1-line CLAUDE.md edit. It takes 2 minutes. The risk of NOT doing it is a silent settings.json drift after the binary update.

Blast radius: CLAUDE.md edit only. Zero SI impact. Zero settings.json changes.

Effort: 2 minutes.

Priority: HIGH — do concurrently with or before T030.

Source: CC v2.1.119 CHANGELOG (/config persistence change); C:/Users/Harnoor/.claude/settings.json (read 2026-04-24).

---

6. Anti-Patterns — CC Features TITAN and SI Should NOT Copy

The prior audit's anti-pattern catalog (AP-1 through AP-4) stands. No new anti-patterns this cycle.

AP-5 (new this cycle): /config persistence as an operator footgun.

CC's decision to make /config persistent is a reasonable UX improvement for developers who want their in-session tuning to survive. For TITAN, which has a carefully version-controlled settings.json, this is an anti-pattern to defend against rather than embrace. The lesson: any feature that silently modifies a configuration file previously considered stable is a footgun unless documented. Silent Infinity has no analogous risk (no local CC install), but the pattern applies to any future tooling that writes to SI's config infrastructure.

---

7. First-of-Day Digest Note

This audit runs at the 00:17 local / 00:27 UTC slot — the first-of-day cadence. Per the audit protocol, a digest email is drafted to harnoors@gmail.com with subject [Claude Code audit] 2026-04-24 — 3 recommendations · 0 regressions.

Digest summary for email:

---

8. Sources

1. F:/TITAN/plans/advisors/CLAUDE-CODE-ARCHITECTURE-DEEP-DIVE-2026-04-22.md — baseline (SCOUT, 2026-04-22)

2. F:/TITAN/plans/advisors/claude-code-audit-2026-04-23-2230.md — prior cycle (read 2026-04-24)

3. F:/TITAN/plans/task-registry/TASK-REGISTRY-2026-04-21.md — live task registry (read 2026-04-24)

4. F:/TITAN/plans/audit-cadence.log — audit history (read 2026-04-24)

5. C:/Users/Harnoor/.claude/settings.json — TITAN hook + permissions config (read 2026-04-24)

6. C:/Users/Harnoor/.claude/cache/changelog.md — local CC changelog cache (read 2026-04-24)

7. C:/Users/Harnoor/.claude/plugins/install-counts-cache.json — marketplace cache (read 2026-04-24)

8. github.com/anthropics/claude-code/releases — confirmed v2.1.119 latest at 23:24 UTC Apr 23 (fetched 2026-04-24)

9. raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/CHANGELOG.md — full v2.1.119 changelog (fetched 2026-04-24)

10. code.claude.com/docs/en/whats-new — weekly digest index (fetched 2026-04-24)

11. code.claude.com/docs/en/whats-new/2026-w15 — Week 15 digest: Ultraplan, Monitor tool, /autofix-pr (fetched 2026-04-24)

12. releasebot.io/updates/anthropic/claude-code — release aggregator v2.1.113–v2.1.119 (fetched 2026-04-24)

13. help.apiyi.com/en/claude-code-changelog-2026-april-updates-en.html — April changelog synthesis v2.1.69–v2.1.101 (fetched 2026-04-24)