- Concurrent feature-flag polls for the same account now share one in-flight request. The cache was marked fresh before its network request finished, so a caller that raced the initial poll returned immediately with the default value — a flag that was actually enabled read as disabled until something triggered a later refresh. Failures now propagate so a subsequent call can retry, and switching accounts does not wait on the previous account's request
- Run-start hooks can now inject context.
beforeRunreturns a newAgentRunStartResultcarrying anappendContextchannel alongsidestop/reason—AgentStopControlstays assignable, so existing implementors compile unchanged — and the runtime injects what it collects as a single<hook_context source="RunStart">message placed after the run's input messages, so the model sees it on the run's first request. A resumed session seeded with a trailing unresolvedtool_usegets the block immediately before that call instead, keeping thetool_use/tool_resultpair adjacent, and a stopping hook's context is never injected. At the hook-file and subprocess layers,agent_startandagent_resumehad always spawned detached with stdio ignored, discarding bothcontextModificationandcanceloutright; honoring them is now available behind a newblockingRunStartHooksoption that defaults to today's fire-and-forget, since blocking by default would silently stall every run start for hosts whose existing scripts linger. With the flag on, a blocking run-start hook that backgrounds a child settles after a post-exit grace period and drops its stdio pipes, so a lingering grandchild can no longer hang the run — hook authors should give backgrounded children their own stdio. A newhooks.detached_runtimeevent reports each detached hook once, including a censored sample for hooks still running after a 30-second observation window - On Windows, a program planted in the workspace can no longer run in place of the real one. libuv resolves a bare program name (
rg,git,powershell, anything the model names) by searching the child's working directory before PATH, and Cline spawns those with the user's repo as cwd, so opening a repo containing anrg.exeexecuted it during file indexing, before any approval. NewdisableCurrentDirectoryExecutableSearch()in@cline/sharedsets Windows' documentedNoDefaultCurrentDirectoryInExePathopt-out, which libuv, Bun 1.4+, cmd.exe and the C runtime all honor, so one call at process startup covers every spawn and every child. Embedders hosting@cline/corein their own Windows process should call it before anything spawns; the Cline CLI, desktop sidecar, VS Code extension and JetBrains core do - Compaction now triggers on the provider's reported input-token count, not just a character estimate. The trigger compared a ~3 chars/token estimate against the model's input budget, so dense content — disassembly, image dumps, minified sources — could reach the real context ceiling while the estimate stayed under the threshold and compaction never fired; affected runs filled the window and had their turns squeezed down to a handful of output tokens. The runtime now records the provider-reported input-token count for each request and threads it to the prepare-turn pipeline as
previousRequestInputTokens, and the trigger usesmax(estimate, actual), keeping the estimate as a floor so the very first oversized turn is still caught before any usage has been reported. The default summarizer output budget also goes from 4096 to 8192, since a model that reasons by default can spend a tight budget on thinking and return no summary text at all - Subagent tool calls now run concurrently by default.
spawn_agentand configuredsubagent_<name>tools opt into a newexecutionModethatcreateToolpreserves and the agent runtime honors, so adjacent parallel calls execute together while sequential tools remain ordering boundaries; unmarked tools keep using the parent's execution setting. Preparation, hooks, and approvals still run sequentially and complete before execution begins, and the parent still waits for every tool result before its next model turn - Configured subagents no longer inherit the parent session's tool approval policies and approval callback for their own tool calls, which aligns them with generic
spawn_agentchildren and teammates. With manual approvals enabled, a configured child prompted for its own tool calls after the parent had already approved the delegation — and once siblings could run concurrently, multiple children reaching the one-shot terminal approval handler on the same stdin meant a singleycould approve several pending operations. The parent's approval policy still governs thesubagent_<name>delegation call itself, and configured tool allowlists and disabled-tool filtering are preserved - Deleting a session that exists only as an on-disk manifest now actually removes it. History listing can recover a session from its manifest when the session index row is missing, but deletion checked only the index, so the request completed while the manifest survived and the next history refresh showed the session again. Shared session persistence — the path VS Code, JetBrains, and the CLI all use — now deletes valid manifest-backed sessions without rebuilding their missing index rows first, accepting only matching, path-safe session IDs and removing only the canonical session directory under the current Cline data root
@cline/sharednow exposes rules-path resolvers so hosts stop hardcoding one layout.resolveWorkspaceRulesConfigPaths()returns both supported workspace rule layouts (.clinerulesand.cline/rules), andresolveGlobalRulesConfigPaths()returns every global rules location — now including OneDrive Known-Folder-Move Documents candidates, so global rules the VS Code extension created in a redirected Documents folder are finally found by the resolver the desktop app
Cline SDK 0.0.84
Released · Cline
Changes hooks, subagent definitions
Models:Adds DeepSeek V4.1 Flash ·Adds GLM 5.3 Flash ·Adds GPT-6 Astra ·Adds Grok 4.7