9c573f1e3c
Decisions, environment quirks and pitfalls learned while working on AgentHub (docs/claude-memory/, indexed by MEMORY.md). Notes holding personal account details are left out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
51 lines
5.2 KiB
Markdown
51 lines
5.2 KiB
Markdown
---
|
||
name: claude-code-changelog-2-1-293
|
||
description: "Claude Code changelog 2.1.285–2.1.295 (to 2026-10-08) — items that touch AgentHub's hooks, plugins, resume, MCP, CLI, Workflow"
|
||
metadata:
|
||
node_type: memory
|
||
type: reference
|
||
originSessionId: f2f2cbeb-6ac1-4876-8b8a-f8dc6cd3a17b
|
||
modified: 2026-10-09T03:58:51.151Z
|
||
---
|
||
|
||
Source: https://code.claude.com/docs/en/changelog (re-read 2026-10-09). Installed on this box: 2.1.295 = latest (auto-updated). The local ~/.claude/cache/changelog.md is stale (stops at 2.1.139); always read the web page.
|
||
|
||
AgentHub-relevant changes:
|
||
- **2.1.295**:
|
||
- Hooks get `onFailure: "block"` for command/HTTP hooks: a hook that fails, times out or exits oddly BLOCKS the action. AgentHub's own hooks must keep the default (fail-open), per CLAUDE.md "Hooks: keep fail-safe and non-blocking". Never set it in plugin.json or the installer.
|
||
- **Program Status Protocol (OSC 7501)**: Claude Code reports working / waiting / done to the terminal. TESTED 2026-10-09: it cannot replace hooks and does not work through tmux; see [[osc7501-vs-hooks]].
|
||
- `claude -p` prints on stderr what it is waiting for when it stays open.
|
||
- Subagents preload at most 32 skills.
|
||
- claude.ai connectors default to MCP protocol 2026-07-28 (`MCP_PROTOCOL_NEGOTIATION=legacy` opts out).
|
||
- Fixes:
|
||
- Background sessions no longer inherit `FORCE_COLOR=3`.
|
||
- Subagents in a linked worktree no longer see the parent's git branch/status.
|
||
- An async SessionStart hook's context is no longer re-added on every resume.
|
||
- `CLAUDE_ENV_FILE` vars now survive `/resume` and `/branch`.
|
||
- `--tools`/`--restricted` now cover late-registered tools.
|
||
- An Edit is no longer treated as a full read when the file changed without its mtime advancing.
|
||
- Grep accepts `-l`/`-c`/`-r`.
|
||
- **2.1.294**: `prompt`/`agent` hooks written as instructions ("Block commands that…") no longer let through what they should block, and Stop/SubagentStop prompt hooks are judged better.
|
||
- **2.1.293**: `subagentStatusLine` payload gains `agentType`; mods' `classic.*` hooks no longer skipped during plugin-hooks-worker restart; `claude plugin test` gets `mock.session`.
|
||
- **2.1.292**: `claude plugin install --marketplace <source>` (adds marketplace + installs in one step — could simplify the manual install command); stdio MCP negotiates protocol 2026-07-28 by default (`MCP_PROTOCOL_NEGOTIATION=legacy` opts out — relevant to `agenthub mcp`); `/loop` wakeups survive process restart.
|
||
- **2.1.290**: `claude attach <name>` / `claude logs <name>` accept partial session names; plugin hook `tool.check` has `agentId`; permission rules re-applied after a PreToolUse hook rewrites input; `CLAUDE_CODE_DISABLE_ATTACHMENTS` no longer settable from repo `.claude/settings*.json`.
|
||
- **2.1.289**: `agent.spawn` for teammates, one agent id across plugin hook events, idle/waiting in `$.agent.list()`; fixed stale local-folder-marketplace plugin copies and mods not loading in first session after upgrade.
|
||
- **2.1.288**: resume/transcript-loss fixes; InstructionsLoaded hook now carries `agent_id`/`agent_type`; PreToolUse/PermissionRequest now BLOCK the call if matching fails or input isn't JSON-serializable; `claude project purge` → `claude purge` (old name still works).
|
||
- **2.1.287**: **Claude Mods** (plugins modifying deeper behavior, function hooks); OTel `user_prompt` gains `prompt_text` (mask like `prompt`); MCP `alwaysLoad: false` defers all that server's tools behind tool search; "N hooks ran" no longer double-counts internal callbacks; SessionStart from synced plugins runs in cloud sessions.
|
||
- **2.1.286**: `--bare` connects only CLI-named MCP servers, no system reminders, no background tasks; `/hooks` is one grouped list; plugin installs refuse npm sources that are git repos/folders.
|
||
- **2.1.285**: `claude --desktop`; `claude plugin configure <plugin>` (+ `--values-stdin`); `claude plugin install --config <server>.<key>=<value>`; managed `allowedProviders`; `CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`.
|
||
|
||
Nothing in this range changes `--session-id`, `--worktree`, `/reload-plugins` or tmux behavior that AgentHub relies on (see [[update-never-kills-panes]]).
|
||
|
||
Useful for the user's own workflow (beyond AgentHub):
|
||
- Skill evals (`learned:writing-agent-context` → `claude plugin eval`): 2.1.292 makes a failed `expect` in a test-registered hook, or a refused stub answer, FAIL `claude plugin test` instead of passing silently, so a suite that was green before may now go red for a real reason.
|
||
- `claude purge` is the new name of `claude project purge`.
|
||
- `/loop` and scheduled tasks now survive resume, compaction and process restart (2.1.290/2.1.292).
|
||
- `claude --desktop` opens the current dir/session in the desktop app.
|
||
- Workflow tool (2.1.295):
|
||
- `scriptPath` is only accepted for a path the tool returned or a readable dir. The refusal now says to pass the script inline via `script`.
|
||
- Workflow scripts are persisted under ~/.claude/projects/<cwd-slug>/…; copy one into an added dir (not /tmp, see [[tmp-wiped-on-reboot]]) to resume it.
|
||
- "May have been stopped by TaskStop" on resume was a false notice and is fixed.
|
||
- Forked skills inside workflow subagents now return to the invoking agent.
|
||
- `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` caps unattended 429/529 retry waits.
|