ALL MEMOS Download .docx

Claude Code Audit — 2026-04-23 16:30 UTC

Cycle: 5th audit of the day (every-6-hours cadence)

Auditor: SCOUT (TITAN research agent)

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

Prior audits: claude-code-audit-2026-04-22-1530.md, -1700.md, -1800.md, -2200.md, 2026-04-23-0000.md, -0400.md

CC version at last audit (04:00 UTC): v2.1.118

CC version this cycle: v2.1.118 (no new release since 04:00 UTC)

Local install: v2.1.49 (note: TITAN runs an older pinned install; latest npm is v2.1.118)

Word count: ~2,200

---

1. CC Version Delta Since Last Audit (04:00 UTC → 16:30 UTC)

No new release this cycle. The latest version on npm and GitHub remains v2.1.118 (released 2026-04-23). The complete version history since the baseline audit (which examined the leaked v2.1.88 source) is now documented across six audit cycles. For this cycle, the focus shifts to: (a) patterns revealed by the full v2.1.108–v2.1.118 changelog that prior audit cycles did not analyze, (b) a fresh Silent Infinity regression check against those patterns, and (c) three net-new recommendations.

Full version ladder since baseline (v2.1.88 at leak, April 2026):

| Version | Date | Key Architectural Signal |

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

| v2.1.105 | ~Apr 7 | PreCompact block support, skill description cap raised to 1,536, monitors manifest key |

| v2.1.108 | Apr 14 | ENABLE_PROMPT_CACHING_1H, /recap session rehydration, skill-tool unification (slash commands discoverable via Skill tool) |

| v2.1.109 | Apr 15 | Extended-thinking progress indicator |

| v2.1.110 | Apr 15 | /tui fullscreen, push notification tool, Remote Control /context//exit |

| v2.1.111 | Apr 16 | Opus 4.7 xhigh effort, /ultrareview parallel multi-agent review, /less-permission-prompts skill |

| v2.1.112 | Apr 16 | Bedrock Opus 4.7 availability fix |

| v2.1.113 | Apr 17 | Native binary CLI, sandbox.network.deniedDomains, bash deny-rule hardening for exec wrappers |

| v2.1.114 | Apr 18 | Permission dialog crash fix for agent team |

| v2.1.116 | Apr 20 | 67% faster /resume on large sessions, stall detection, deferred MCP template loading |

| v2.1.117 | Apr 22 | /fork pointer hydration, forked subagents on external builds, mcpServers in agent frontmatter |

| v2.1.118 | Apr 23 | MCP tools invocable from hooks, /usage (merged /cost+/stats), named themes, WSL settings inheritance, DISABLE_UPDATES |

Source: github.com/anthropics/claude-code/releases and raw CHANGELOG.md, fetched 2026-04-23.

---

2. New Patterns This Cycle — Features Not Yet Analyzed in Prior Audits

2.1 Skill-Tool Unification: Built-in Slash Commands Now Discoverable via Skill Tool (v2.1.108)

What changed. As of v2.1.108, the model can discover and invoke built-in slash commands (e.g., /recap, /effort, /fork) via the same Skill tool mechanism used for user-defined skills. Prior to this, slash commands were a separate invocation surface.

Architectural significance. This completes the unification of two previously parallel systems: user-defined skills (semantic match → content injection) and built-in slash commands (explicit invocation → fixed behavior). The model can now reason about which capability to invoke without distinguishing between "things Harnoor wrote" and "things Anthropic built." The Skill tool becomes a unified capability router.

Implication for TITAN. TITAN's 13 installed skills and the built-in CC capabilities now live in the same cognitive namespace for the model. If TITAN defines a /feed skill, the model sees it alongside /recap, /fork, and /ultrareview as co-equal capabilities. The description front-loading rule (trigger phrase in first sentence) is therefore even more critical — skills compete with built-ins for selection.

For Silent Infinity. The unification pattern is aspirational for SI's skill analog (T025). SI currently has no such system. When T025 ships, the skill-tool-unification model is the right architecture: a single skill router rather than separate "system behaviors" and "domain injections."

Source: CHANGELOG.md v2.1.108, raw.githubusercontent.com, fetched 2026-04-23.

---

2.2 Prompt Cache TTL Now Configurable (1 Hour) — SI's 5-Minute TTL Is a Known Gap (v2.1.108)

What changed. v2.1.108 added ENABLE_PROMPT_CACHING_1H to enable 1-hour prompt cache TTL. The 5-minute default (FORCE_PROMPT_CACHING_5M) is only forced when needed for CI/testing. The rationale: users who gap more than 5 minutes between turns (very common in long-form or asynchronous work) get a cache miss on every turn after the gap. 1-hour TTL eliminates this for most human-paced sessions.

Implication for Silent Infinity. T019 (closed 2026-04-22) confirmed that SI's bedrock_client uses prompt caching with cache_control: {"type": "ephemeral"}. However, the T019 resolution note explicitly flagged that the default Bedrock ephemeral TTL may be 5 minutes, and users gapping 6+ minutes get a cache miss. That gap is now confirmed real: CC itself introduced a 1-hour TTL specifically to address this pattern.

The Bedrock question. Whether Bedrock supports 1-hour TTL for prompt caching is not confirmed in this cycle. CC's ENABLE_PROMPT_CACHING_1H uses Anthropic's direct API. If Bedrock supports the equivalent (e.g., {"type": "ephemeral", "ttl": "1h"}), SI should enable it. If Bedrock does not yet support extended TTL, this is a watch-and-ship item (same posture as T020 Advisor Tool).

This is an existing open item (T019 follow-up, noted in registry). This cycle's new information: CC's own shipping of this feature confirms the pattern is validated and the gap is real, not theoretical.

Source: CHANGELOG.md v2.1.108, raw.githubusercontent.com, fetched 2026-04-23. T019 resolution: TASK-REGISTRY-2026-04-21.md.

---

2.3 /ultrareview — Parallel Multi-Agent Code Review (v2.1.111): A Pattern with Felt-Intelligence Implications

What it is. /ultrareview spawns multiple parallel subagents that each analyze a different dimension of the code or PR being reviewed (correctness, security, readability, test coverage, etc.), then synthesizes their outputs into a consolidated review. It uses the same AgentTool forked-subagent pattern from the baseline but applied to a specific product workflow.

Architectural significance. This is the first shipped example in CC of the parallel specialist pattern (Pattern 8 in the baseline) as a user-facing product feature — not just an infrastructure capability. Prior to this, multi-agent orchestration was infrastructure. /ultrareview is infrastructure surfaced as product.

For Silent Infinity. The lesson is not "build /ultrareview for emotions." It is: the parallel specialist pattern (Pattern 8) has been validated by Anthropic as a shipping pattern at the product layer. SI's Chat Sentinel (already a primitive sub-agent) is the right seed for this. The Personalization Sentinel and Session Summarizer (both listed as T025-adjacent sub-agents) follow the same validated model.

Anti-pattern note. /ultrareview is explicitly for code, a domain where parallel coverage is safe and correctness is verifiable. The parallel specialist pattern in a wellness context requires more care: running a "grief specialist subagent" in parallel with a "purpose specialist subagent" on the same user message risks fragmented or inconsistent responses if synthesis is poor. SI should implement Pattern 8 (sub-agents) for background processing (sentinels), NOT for generating user-facing response fragments.

Source: CHANGELOG.md v2.1.111, raw.githubusercontent.com, fetched 2026-04-23.

---

2.4 cleanupPeriodDays Now Covers Tasks and Shell Snapshots (v2.1.117)

What changed. The cleanupPeriodDays setting now extends to ~/.claude/tasks/, shell-snapshots, and backups. Prior audits noted the append-only JSONL transcript design and the snapshot-before-edit pattern. This cleanup extension is the lifecycle management side of that design.

TITAN scan. The local ~/.claude/shell-snapshots/ directory (observed this cycle) contains dozens of snapshot files — evidence that the snapshot mechanism is active and running. The cleanupPeriodDays setting ensures these do not accumulate indefinitely. TITAN's settings.json does not currently configure cleanupPeriodDays — this means the system default applies. The default is not documented in the changelog; TITAN should verify the default is not 0 (unlimited) before snapshots accumulate to disk pressure on the F: drive.

New observation this cycle. The ~/.claude/ glob this cycle reveals a plugins/ directory (~/.claude/plugins/install-counts-cache.json) that was not mentioned in prior audits. This is new since the baseline — CC's plugin marketplace feature has been installed. The plugin system was enabled in v2.1.105+ and is distinct from the MCP server system. TITAN has no plugins installed per the install-counts-cache (empty object), but the plugin infrastructure is present.

Source: CHANGELOG.md v2.1.117, raw.githubusercontent.com, fetched 2026-04-23.

---

2.5 MCP OAuth Hardening — Six Separate Fixes in v2.1.118

What changed. v2.1.118 shipped six distinct MCP OAuth bug fixes: race conditions on token refresh, cross-process lock for concurrent refresh, token expiry handling, OAuth flow timeout handling, credential file corruption, and CLAUDE_CODE_OAUTH_TOKEN env var interaction with /login.

Significance. This is the largest single-release concentration of MCP OAuth fixes in the changelog. The pattern suggests: MCP OAuth is a known fragile surface, and Anthropic is actively hardening it. For TITAN, which uses MCP servers (evidenced by mcp-needs-auth-cache.json in ~/.claude/), this is directly relevant: updating to v2.1.118 (from the locally installed v2.1.49) would capture all of these fixes.

Version gap flag. TITAN's local install is v2.1.49. The current npm release is v2.1.118. This is a 69-version gap. All architectural features analyzed across all six audit cycles (skills frontmatter, hook MCP invocation, /recap, PreCompact block, context: fork, /fork pointer hydration, etc.) are on v2.1.118 and unavailable to TITAN's installed binary. This is a carry-forward flag from prior audits that has not been actioned.

Source: CHANGELOG.md v2.1.118, raw.githubusercontent.com, fetched 2026-04-23. Local install: C:\Users\Harnoor\AppData\Roaming\Claude\claude-code\2.1.49\claude.exe (baseline).

---

3. Silent Infinity — Regression Check

Full 14-pattern audit against current codebase state (grepped 2026-04-23):

| # | Pattern | CC Posture | SI Status | Evidence |

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

| 1 | Memory layering (hot/warm/cold) | File-tiered, MEMORY.md index | ALIGNED | memory.py:put_fact, get_memory_block, put_session_recap, get_last_recap, put_correction all confirmed |

| 2 | System prompt composition (layered) | 6-layer conditional stack | ALIGNED | system_prompt.py + variant injection + memory block (T014 CLOSED) |

| 3 | Tool use (structured, schema-validated) | 50 tools, JSON Schema, harness executes | GAP | SI capabilities remain prompt-described; T025-adjacent but not yet shipped |

| 4 | Sub-agent orchestration | Forked workers, summary-only returns | PARTIAL | feedback_monitor.py is primitive sub-agent pattern; no forked domain sentinels yet |

| 5 | Verification-before-claim | Harness validates tool results before report | ALIGNED | System prompt instruction present (P9 ported) |

| 6 | Plan mode | Read-only pre-execution posture | GAP | No reflective-pause / two-call architecture. T-entry not yet filed. Low urgency for wellness context |

| 7 | Correction-as-memory | Live feedback extraction → DDB | ALIGNED | T017 CLOSED: handler.py:5579/5596 confirmed |

| 8 | Skill auto-invocation | Semantic match, lazy-load, 1,536-char cap | GAP | T025 OPEN — highest unaddressed pattern gap |

| 9 | Session transcript rehydration | JSONL append-only, /recap, /fork pointer | PARTIAL | get_last_recap() wired at handler.py:6840; no session fork or resume endpoint |

| 10 | Interruptible streaming | ESC mid-stream, partial transcript | AHEAD | SSE abort flow exists in SI voice; text path not confirmed |

| 11 | Memory compaction | 5-layer graduated pipeline | ALIGNED | T016 CLOSED: conversation_store.py:220-309 confirms 2-layer compaction live |

| 12 | Permission / guardrail model | 8-layer deny-first | ALIGNED | guardrails.py deny-first + T019 cache + system prompt |

| 13 | Pre-session briefing | SessionStart hook + CLAUDE.md as user msg | ALIGNED | T014 CLOSED: memory injected as user message; /me/opener uses recap |

| 14 | Parallel tool calls | StreamingToolExecutor, concurrency flags | GAP | No parallel capability dispatch; single Sonnet call per turn |

Regressions since last audit (0400 UTC): None detected. No code shipped between 0400 UTC and 1630 UTC that moved away from any CC pattern.

One new partial-gap surfaced this cycle: The session rehydration pattern (Row 9) is partially implemented (get_last_recap() at line 6840 confirmed), but the CC pattern now includes /fork (pointer-based session branching) and /recap (explicit session summary on reconnect). SI has recap injection but no fork endpoint. This is an existing known gap (T-entry recommended below), not a regression.

---

4. Top 3 Recommendations This Cycle

These are net-new from all prior 2026-04-23 cycles (Recs G, H, I already filed as T022, T023, T024).

Rec J — File T-entry for 1-Hour Prompt Cache TTL Investigation on Bedrock

What. Investigate whether AWS Bedrock supports cache_control: {"type": "ephemeral", "ttl": "1h"} and, if so, enable it in bedrock_client.py.

Why. CC v2.1.108 shipped ENABLE_PROMPT_CACHING_1H specifically because users gapping >5 minutes between turns lose cache benefits entirely. SI users are a wellness product audience — they are more likely than developers to pause mid-session for emotional processing. A 5-minute TTL is a poor fit for a product designed around slow, reflective conversation. If Bedrock supports 1-hour TTL, the cost savings are real: cache creation cost paid once per hour rather than once per 5 minutes on re-entry.

Investigation scope. Check AWS Bedrock prompt caching docs for TTL parameter support. If supported: 1 line change in bedrock_client.py (cache_control: {"type": "ephemeral"}{"type": "ephemeral", "ttl": "1h"}). If not supported: file as a watch item alongside T020 (Advisor Tool).

Blast radius: bedrock_client.py only if supported; registry entry only if not.

Effort: 0.5 hours (investigation) + 0.25 hours (if change warranted).

Source: CC CHANGELOG v2.1.108, raw.githubusercontent.com, fetched 2026-04-23. T019 follow-up note, TASK-REGISTRY-2026-04-21.md.

---

Rec K — Add if Conditional to TITAN Bash/Read/Glob/Grep Metrics Hook

What. Split the Bash|Read|Glob|Grep|WebSearch|WebFetch PostToolUse matcher in ~/.claude/settings.json into two entries: (1) WebSearch|WebFetch — keep metrics; (2) Bash|Read|Glob|Grep — add conditional if or sample-only (e.g., 10% of calls).

Why. CC v2.1.118 supports type: "mcp_tool" in hooks (Section 2 of this cycle) and has supported conditional if hook evaluation since v2.1.85 (confirmed in prior audits). The current TITAN config spawns titan-metrics.py on every read tool call — including trivial ls, cat, pwd, brief Globs. On Windows, Python subprocess spawn is 50–150ms. For a high-frequency tool like Bash (used on virtually every agent turn), this is pure latency overhead on operations that carry no architectural signal worth metering. WebSearch/WebFetch are high-value signals (external intel gathering). Bash/Read/Glob/Grep are low-value signals at this granularity.

This rec was filed as T026 in the prior audit cycle (0000 UTC, 2026-04-23). Surfacing again because it is a trivial 15-minute change that remains open and directly affects every session's turn latency.

Blast radius: ~/.claude/settings.json only. No code changes.

Effort: 15 minutes.

Source: CC CHANGELOG v2.1.118 (hook if support); current ~/.claude/settings.json (read 2026-04-23).

---

Rec L — Update TITAN Local Install from v2.1.49 to v2.1.118

What. Run npm update -g @anthropic-ai/claude-code to bring the local TITAN install from v2.1.49 to v2.1.118.

Why. The skill frontmatter fields analyzed across this audit series (effort, context: fork, model, hooks, paths, allowed-tools, arguments) are CC v2.1.105+ features. TITAN's 13 installed skills cannot use any of them on v2.1.49. Recommendations G and H (T022, T023 — both closed as already applied per registry) assume the model can honor effort: high and context: fork frontmatter — but neither field will be parsed by v2.1.49. The frontmatter changes applied in T022/T023 are currently inert.

Risk. Version gaps sometimes introduce behavioral changes (example: v2.1.111 raised default effort to high for Pro/Max users). The update should be done with TITAN's defaultMode: bypassPermissions intact, and a one-session smoke-test of each of the 13 skills afterward. If a skill description conflict with built-ins emerges (Section 2.1 of this cycle), T022/T023's description front-loading guidance applies.

Blast radius: TITAN binary only. No Silent Infinity impact. No CLAUDE.md or settings.json changes needed.

Effort: 5 minutes + 20-minute smoke test.

Source: GitHub releases page, fetched 2026-04-23. Baseline memo (local install version). CC CHANGELOG v2.1.105 (skill frontmatter fields first available).

---

5. Anti-Patterns — Carried Forward + One Correction

Anti-patterns 1–6 carried from prior audits (bypass permissions, infrastructure ratio warning, context-window-as-state-store, CC verbosity, committed tone conflicts with contemplative register, context: fork on non-task skills).

One clarification this cycle on Anti-Pattern 5 (CC committed tone).

The defaultMode effort level change in v2.1.117 (Pro/Max on Opus 4.6 and Sonnet 4.6 now default to effort: high) is worth noting for SI. Higher effort = more extended thinking = longer, more internally-deliberated responses. CC uses this for coding tasks where depth improves correctness. For SI, higher-effort model responses risk producing responses that are over-articulated — the contemplative mirror should reflect, not philosophize. If SI ever evaluates effort levels (e.g., via T011 Stage 3 Opus 4.7 canary), the effort parameter should be tested explicitly: the default high that serves CC's coding domain may actively harm SI's witnessing discipline by producing verbose, intellectually-heavy responses.

The T027 golden-sample test suite (filed 2026-04-23) should explicitly include an effort-level dimension: run the 20 grief/anxiety/purpose/relationship samples at effort: medium and effort: high and score for reflection warmth and over-articulation risk.

Source: CC CHANGELOG v2.1.117 (effort default change); baseline anti-pattern section; T011 and T027 task registry entries.

---

6. TITAN Local Scan — New Artifacts Not in Baseline

Comparing ~/.claude/ contents observed this cycle against baseline inventory:

| Artifact | Status |

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

| ~/.claude/skills/ — 13 skills (feed, sense, evolve, pulse, monologue, reflect, newsletter, teach, learn, titan, briefing, dream, sense/token-tracker.md) | Present — matches prior audit count. No new skills added since last audit. |

| ~/.claude/plugins/install-counts-cache.json | NEW — not in baseline. Plugin infrastructure present, no plugins installed. |

| ~/.claude/telemetry/ | NEW directory — 1p_failed_events files. Telemetry is active and failing to upload some events (likely DISABLE_TELEMETRY not set but network blocked). |

| ~/.claude/statsig/ | Present — evaluation cache and session files. Normal. |

| ~/.claude/mcp-needs-auth-cache.json | Present — confirms MCP servers are configured (but no mcpServers key found in settings.json; these may be project-scoped MCP configs). |

| ~/.claude/projects/ | Active — dozens of subagent session JSONs for current TITAN working directory. |

New flag — telemetry failure events. The telemetry/1p_failed_events.*.json files indicate that CC is attempting to send first-party telemetry but some events are failing. This is benign if TITAN is running behind a firewall. However, if DISABLE_TELEMETRY is not explicitly set, CC defaults to telemetry-enabled, which means the 5-minute prompt cache TTL applies (not the 1-hour subscriber TTL). Setting DISABLE_TELEMETRY=1 in TITAN's environment would: (a) stop telemetry uploads, (b) switch to 1-hour cache TTL automatically (confirmed in v2.1.108 changelog: "Subscribers with DISABLE_TELEMETRY use 1-hour cache"). This is a free cache improvement with no downside for a private install.

Source: ~/.claude/ glob, 2026-04-23. CC CHANGELOG v2.1.108 (telemetry/TTL interaction).

---

7. Summary Statistics

---

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-0400.md — prior audit cycle (most recent before this)

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

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

5. raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/CHANGELOG.md — official CC changelog, v2.1.105–v2.1.118 (fetched 2026-04-23)

6. github.com/anthropics/claude-code/releases — GitHub release index with dates (fetched 2026-04-23)

7. npmjs.com/package/@anthropic-ai/claude-code — npm package page (attempted; 403)

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

9. C:/Users/Harnoor/.claude/skills/ — TITAN skill inventory, 13 skills (globbed 2026-04-23)

10. C:/Users/Harnoor/.claude/ — full directory scan (globbed 2026-04-23)

11. F:/projects/innerverse/backend/src/conversation_store.py — SI compaction (read lines 220–313, 2026-04-23)

12. F:/projects/innerverse/backend/src/handler.py — SI handler, lines 6835–6864 (read 2026-04-23)

13. F:/projects/innerverse/backend/src/ — module inventory (globbed 2026-04-23)

14. news.ycombinator.com — Claude Code discussions — community signal, last 7 days (fetched 2026-04-23)

15. x.com/bcherny — CC creator self-reports 100% CC-written contributions (fetched 2026-04-23)

16. VILA-Lab/Dive-into-Claude-Code (github.com) — systematic analysis (referenced; not re-fetched this cycle)