New --marketplace flag, Agent effort control, and mod prompt caching lead a huge release, backed by sweeping fixes across plugin hooks, cloud sessions, and terminal input.
--marketplace <source> to claude plugin install: adds the marketplace if needed, under the same policy checks as claude plugin marketplace add, then installs the plugin from iteffort parameter to the Agent tool, so Claude runs a sub-agent at the effort level you ask forCLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS environment variable to set a longer base delay for the backoff when retrying an overloaded (529) requestprompt.autocomplete, an event a mod hooks to add its own rows to the prompt box's autocomplete list$.model.complete for mods: prompt and system take blocks of text, and cache: true on a block caches the request up to itagent.spawn mod hook, with their run and index, so a mod can refuse themclaude -p and SDK sessions: the first turn no longer waits for HTTP and SSE MCP servers to answer resources/list<system-reminder> tags written in a hook's output are escaped before they reach Claudefile_path for path, and Write, WebFetch and Read ignore a few stray parameters instead of failing the callFOO=bar python3 app.py runs unpromptedpermissionMode: auto entering auto mode when auto mode is unavailable (disabled by settings, circuit breaker, or a model that doesn't support it)/ultrareview uploads under ~/.claude/seed-adminrm -rf on the 8.3 short name or another alternate Windows spelling of the home folder or a drive not being treated as removing itallowed-tools rule coming back in a later turn when you leave auto mode or plan mode partway through that turnNO_PROXY being ignored for Claude Code's own API requests (sign-in, policy, feedback, artifacts) when HTTPS_PROXY is setclaude plugin commands such as marketplace add and install running before an organization's managed settings had loaded on a first runclaude -p and Agent SDK runs stopping a background command 5 seconds after the final result, and one-shot claude -p runs dropping a scheduled wakeup; both are now waited forclaude --resume session picker or with /resume/resume, /branch or /clear never firing, and saved tasks ignoring later creates and deletes after two writes to the tasks file milliseconds apart/loop silently stopping when the session's process restarted (for example after a crash), because its pending wakeup was lostpages was a list such as "6,9,15"; it now returns an error saying to read each page or range separately/bug, /share and /feedback <text> starting over after Ctrl+O or Ctrl+Z while a report was being sent, and closing as cancelled after it had been sent/remote-env replacing your saved default environment when you pressed Enter right away: the list now opens on your default, and no row has a check mark when no default is in effectf/t/F/T/;/, jumping to, or deleting up to, a match on another line of the prompt/add-dir path box letting Shift+Enter or a paste add a line break, and treating fast-typed "tab", "up" or "down" as those keys! leaving the row selected/cd or a permission change, and added a transcript line when a nested one isn't loaded/name letting Claude invoke a skill that is reserved for the user$.state calls through one const taking minutes to load or validateclaude plugin validate listing a matcher or state value for a hooks module that the engine reads from elsewhereclaude plugin validate listing a $.state value read through a top-level var that was declared again or reassigned; such a module is now refused$ method restarting the hook origin, which could run a guard hook with a .catch above it again without endconfig.set, state.set, env.set or agent.spawn hook that denies after calling next(e) being answered as a refusal: the hook is now reported as failed, by name/theme, the /config Theme menu and the first-run theme step saving a theme before a plugin's config.set hook was askedtool.check hook answering allow running a tool that requires your answer (a question, a plan approval) without showing its dialognext(e) and then failed while the turn was interrupted letting the call through; the call is now rejected$ name that a user-installed mod had added; the mod is now unloaded insteadtool.call hooks seeing some tool calls before misnamed parameters were repaired; a hook now sees the arguments the tool will run with.catch being skipped silently for calls another mod's hook makes beneath the guard's own $ call; its .catch is now askedMCP_PROTOCOL_NEGOTIATION=legacy opts outclaude plugin test: a failed expect inside a hook the test registered, or a stub answer the engine refuses, now fails the test instead of passing silentlyname longer than that is ignored@Claude !status in a channel to say when Claude has stopped reading its untagged messages, why, and that an @-mention starts it reading again!fork to a card showing where it came from, the request, and who asked, with a link to the original thread