Close the modal automatically when users click "Try Devstral" or
"Try GPT-5.2" buttons to improve UX flow. Also update Devstral
button text to clarify it's free.
- OpenAI GPT-5.2
- Devstral-2 `devstral-2512` (formerly stealth model "Microwave")
- Improvements to chat modal model picker
- Amazon Nova 2 Lite
- DeepSeek 3.2 to native tool calling allow list
- Responses API support for Codex models in OpenAI provider (requires native tool calling)
- Xmas Special Santa Cline
- Welcome screen UI enhancements
- Initial checkpoint commit now non-blocking for improved responsiveness in large repositories
- Gemini Vertex models erroring when thinking parameters are not supported
- Restrictive file permissions for secrets.json
- Ollama streaming requests not aborting when task is cancelled
- OpenAI provider to centralize temperature configuration and include missing GPT-5 model settings
- OpenAI native handler to use metadata for model capabilities
- Vertex provider to use metadata for model capabilities
Co-authored-by: Arafatkatze <arafat.da.khan@gmail.com>
* feat: add inline model picker modal
* fix: add together to SETTINGS_ONLY_PROVIDERS, remove sapaicore
* Fix bedrock thinking support and add together to dynamic providers
---------
Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
Previously, tool results were tracked using the tool name as a key. This caused a critical bug during parallel tool execution: if the same tool (e.g., `read_file`) was called multiple times in a single turn, subsequent calls would overwrite the previous ones in the `toolUseIdMap`. This resulted in missing tool results for all but the last call.
This commit changes the tracking mechanism to use the unique `call_id` provided by the LLM as the key. This ensures that every tool call is tracked independently, regardless of the tool name.
Specific changes:
- Updated `toolUseIdMap` in `Task.ts` to store `call_id -> tool_id` instead of `tool_name -> tool_id`.
- Updated `ToolResultUtils.ts` to retrieve tool IDs using `block.call_id`.
- Removed legacy MCP-specific logic that manually mapped the generic `use_mcp_tool` name to an ID. This is no longer necessary (and would be incorrect) as MCP tools now also use the robust `call_id` tracking, enabling parallel execution for them as well.
* feat: add experimental parallel tool calling support
Add a new experimental setting that allows models to call multiple tools
in a single response. This is automatically enabled for GPT-5 models.
- Add enableParallelToolCalling setting (off by default)
- Conditionally enforce didAlreadyUseTool flag based on setting
- Move checkpoint from per-tool to per-response
- Add UI toggle in Feature Settings section
* feat: enable parallel tool calling for GPT-5 in prompts and API (#8028)
* feat: enable parallel tool calling for GPT-5 in prompts and API
Update system prompts for GPT-5 and next-gen variants to instruct
models they may use multiple tools in a single response for independent
operations.
Fix OpenAI API to send parallel_tool_calls: true for GPT-5 models,
which was previously hardcoded to false for all models.
Related: #8020
Changes:
- Updated 5 prompt variant files to allow parallel tool use
- Added enableParallelToolCalls param to getOpenAIToolParams()
- Updated openai-native.ts to enable for GPT-5 model family
* Update system test snapshots for parallel tool calling
* Revert changes to MCP prompts
---------
Co-authored-by: Robin Newhouse <robin@cline.bot>
* feat: Added Devstral 2 Models
* feat(mistral): fix proxy support and add new model definitions
- Fix HTTPClient fetcher to properly extract URL and options from Request
objects, enabling proxy support in standalone mode (JetBrains/CLI)
- Add duplex option for body streams required by Node.js/undici
- Rename devstral-small-latest to labs-devstral-small-2512
- Add mistral-large-2512 model (256K context, $0.5/$1.5 pricing)
- Add ministral-14b-2512 model (256K context, $0.2/$0.2 pricing)
---------
Co-authored-by: omercelik <omercelik@users.noreply.github.com>
The Claude Code CLI returns tool arguments as complete objects, but the
StreamResponseHandler expects string chunks for streaming. This caused
tool calls to fail with "missing parameter" errors because the object
was being concatenated with a string, resulting in "[object Object]".
This change stringifies the tool arguments in the Claude Code provider
before yielding them, ensuring they are correctly parsed by the
StreamResponseHandler.
* enterprise docs
* tested for accuracy
* Reorganize Enterprise docs structure
- Consolidate member management under team-management/
- Unify all configuration under configuration/ with two clear paths:
- remote-configuration/ for simple cloud-based setup
- infrastructure-configuration/ for advanced enterprise features
- Create comprehensive overview pages explaining the differences
- Update all internal links to reflect new paths
- Preserve all existing content while eliminating redundancy
- Maintain clear separation between admin and member documentation
* removed trailing backslash
* fix docs.json
* enterprise docs reformat
* monday update
* tidied up managing members section
* fixed deployment guide
* simplify rules
* workflow cleanup
* rules tweak
* Update docs/enterprise-solutions/configuration/overview.mdx
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
* fix other features
* fixed provider docs
* fixed monitoring
* fix providers
* updated cta and rbac
* fix enterprise overview
* enterprise-docs
* hid self-hosted section for now
* addressed format fixed
* docs: restructure monitoring navigation and move telemetry
- Remove unnecessary OpenTelemetry dropdown wrapper in Enterprise navigation
- Move Cline Telemetry from control-other-cline-features to monitoring section
- Update all internal documentation links to new telemetry path
- Simplify Control Other Cline Features section to focus on Yolo Mode only
- Group related monitoring features (overview, telemetry, opentelemetry) together
This creates a more cohesive navigation structure where telemetry-related
features are adjacent and eliminates unnecessary nested dropdowns.
* docs: rename Basic Telemetry to Cline Telemetry and add link
- Rename all instances of 'Basic Telemetry' to 'Cline Telemetry' for consistency
- Add href link to Cline Telemetry card in Monitoring Options section
- Update section headings and subheadings to use 'Cline Telemetry'
- Ensures consistent naming across monitoring documentation
* docs: restructure Enterprise YOLO Mode to focus on administrator controls
- Change title from 'Yolo Mode' to 'YOLO Mode' for consistency
- Add reference link to /features/yolo-mode for general documentation
- Remove duplicate content about basic YOLO Mode functionality
- Focus exclusively on Enterprise administrator configuration and controls
- Add comprehensive policy recommendations by organization size
- Include security implications, monitoring requirements, and compliance considerations
- Provide detailed technical implementation guidance
- Update overview.mdx card description to reflect enterprise focus
* docs: hide self-hosted/infrastructure configuration references
- Remove choosing-your-deployment from Enterprise navigation
- Remove self-hosted references from enterprise-solutions/overview.mdx
- Remove self-hosted comparison and warning from remote-configuration/overview.mdx
- Remove Info boxes linking to infrastructure config from provider pages (AWS, Google, LiteLLM)
- Remove Self-Hosted OpenTelemetry Collector section from opentelemetry.mdx
- Remove self-hosted deployment section from control-other-cline-features/overview.mdx
All self-hosted/infrastructure configuration documentation remains intact but is no longer
navigable or linked from SaaS provider configuration pages. This allows easy restoration
when features become available.
* clarified domain and seat info
* fixed getOpenTabs function
* Update getOpenTabs.ts
* Update package.json
* Revert package-lock files to main
---------
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Juan Pablo Flores <juan@cline.bot>
* fix: prevent logout on network errors during token refresh
When network errors occur at startup (e.g., opening laptop while offline),
users were being logged out because the token refresh failed and returned
null to AuthService.
Now on network errors or max retries exceeded, we return the stored auth
data instead of clearing the session. This keeps users logged in with
their existing credentials. If the token is truly invalid, the actual API
request will fail later when the user tries to use Cline, rather than
logging them out preemptively at startup.
* chore: add changeset
This change removes hardcoded switch statements in VertexHandler and moves model-specific configurations (like reasoning support and prompt caching) into the centralized model metadata in src/shared/api.ts.
Benefits:
- Decouples handler logic from specific model IDs
- Centralizes model capabilities for easier maintenance
- Simplifies adding future Vertex models
- Improves type safety
Related: ENG-1408, ENG-1385
* feat: hide whats new modal header image for now
* feature: change set
* feat: xmas special santa cline
* fix: minor change to actual svg
* Fix colors
---------
Co-authored-by: Arafatkatze <arafat.da.khan@gmail.com>
* fix: make initial checkpoint commit non-blocking while preventing tool execution races
- Captures the initial checkpoint commit promise in the Task class
- Ensures executeTool waits for the initial commit to complete before running any tools
- Resolves race condition where tools could modify files before the initial state was fully captured
* feat: allow read-only tools to bypass initial checkpoint block
- Defines READ_ONLY_TOOLS allowlist in shared/tools.ts
- Updates Task executor to check tool name against whitelist
- Allows exploration tools (list_files, read_file, browser_action, etc.) to run in parallel with initial commit
- Maintains blocking for state-modifying tools (write_to_file) to ensure data integrity
* feat(banners): add dismiss functionality to banner carousel
- Add onDismiss callback to BannerData interface
- Implement dismiss button (X icon) in BannerCarousel component
- Add onDismiss handlers for info, model, and CLI banners
- Update banner version in state when user dismisses a banner
- Fix carousel index bounds handling when banners are removed
- Refactor carousel handlers with useCallback for better performance
* Fix imports
* feat(banners): show dismiss X only on last card in carousel
* feat(hooks): Implement PreCompact hook
feat(hooks): Continuing implementation of PreCompact hook
feat(hooks): PreCompact supports contextModification
Fixes as per Cline code reviewing the PreCompact implementation
feat(hooks): Tweaking the PreCompact hook behavior while testing
feat(hooks): Implement PreCompact hook in handleContextWindowExceededError code path
feat(hooks): Implement conversation history temp file in task directory for PreCompact to access
feat(hooks): Implement context window temp file in task history directory for PreCompact to access
feat(hooks): Refactor complex function into helpers
* feat(hooks): Improvements from Cline code reviewing the change set
feat(hooks): Refactor duplicate logic into common utility function
feat(hooks): Improve compaction strategy naming
feat(hooks): Deduplicate a small piece of logic
feat(hooks): DRY for getNextTruncationRange()
feat(hooks): Fix contextModification for PreCompact hook
feat(hooks): Improvements as per Cline's code review feedback
feat(hooks): Improving code quality/reduce complexity
feat(hooks): Further code improvements as per Cline code reviewing
* feat(hooks): Changes as per PR feedback
* Prevent multiple simultaneos refreshes when retrieving auth info
* refactor
* Track logout events
* Add changeset
* Persist the startedAt date
* Fix bug
* Use snake case for event properties
* Log failed refresh request information
* feat(cli): Add hooks_enabled support to CLI settings
- Add hooks_enabled field to Settings proto message (field 134)
- Add hooks_enabled parsing to CLI settings parser
- Enables users to toggle hooks via -s hooks_enabled=true/false flag
Fixes missing CLI support for hooks that was available in the VSCode extension
* feat(hooks): Enable hooks in the CLI
* Add include back in after resolving merge conflict
* feat(hooks): Changes as per human code review feedback.
---------
Co-authored-by: NightTrek <Daniels@dual4t.com>
* Add the cline distribution type to the telemetry
In the telemetry we currently have the IDE name, but because there are so many variants of VSCode and JetBrains, it's not easy to group them by VSCode extension or JetBrains plugin. Add this field to the telemetry.
* update unit tests
* Update src/services/telemetry/TelemetryService.ts
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
* Update src/services/telemetry/TelemetryService.ts
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
* Update unit tests
---------
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
This change removes hardcoded switch statements in OpenAiNativeHandler and moves model-specific configurations (like streaming support, system role, and tools support) into the centralized model metadata in src/shared/api.ts.
Benefits:
- Decouples handler logic from specific model IDs
- Centralizes model capabilities for easier maintenance
- Simplifies adding future OpenAI models
- Improves type safety with updated getModel() signature
Related: #7920
* implementing prompt injection for web_search and associated web fetch handler
* remove printing of the ms took
* ui showing query user is searching for
* updating the fields we pass in api request
* updating text for search tool
Move VSCode terminal impls into the src/hosts/vscode package. The VSCode specific code needs to be contained in this directory.
The `src/shared` package is for things shared with the extension and the _webview_; everything in src/ that's _not_ under `src/hosts` is shared with VSCode, JB, CLI implicitly.
ref CLIENTS-34
* feat(terminal): add shared terminal types and interfaces
Add shared terminal module with types and interfaces that enable
terminal management across VSCode, CLI, and JetBrains environments.
- Define ITerminal, ITerminalManager, and TerminalInfo interfaces
- Add TerminalProcessResultPromise for async command execution
- Include StandaloneTerminalOptions for non-VSCode environments
- Prepare module structure for standalone implementations
* feat(terminal): export standalone terminal implementations
Enable exports for standalone terminal classes that were previously
commented out as placeholders:
- StandaloneTerminal
- StandaloneTerminalManager
- StandaloneTerminalProcess
- StandaloneTerminalRegistry
These implementations are now ready for use outside the terminal module.
* fix: resolve TerminalInfo type incompatibility in settings update
- Remove unused TerminalInfo import from both updateSettings files
- Use `as any` cast to handle type mismatch between VSCode and standalone TerminalInfo
- Replace busyTerminals array with busyTerminalsCount to avoid type issues
- Add null-safe access when getting busy terminals length
* feat: import StandaloneTerminalManager from bundled cline-core
Replace standalone enhanced-terminal.js with import from the bundled
TypeScript version in cline-core.js. This consolidates terminal
management code and removes the need to separately include the
runtime file in the VS Code extension package.
- Re-export StandaloneTerminalManager from cline-core.ts
- Update vscode-impls.js to import from cline-core.js
- Remove .vscodeignore exception for enhanced-terminal.js
* feat: simplify standalone terminal manager initialization
Replace global injection pattern with environment variable detection
for determining terminal execution mode. The Task class now directly
instantiates StandaloneTerminalManager when IS_STANDALONE=true instead
of relying on a globally injected instance.
- Remove StandaloneTerminalManager re-export from cline-core.ts
- Simplify vscode-impls.js createTerminal to return stub object
- Use IS_STANDALONE env var for terminal manager selection in Task
- Remove global.standaloneTerminalManager injection pattern
* Fix Standalone build
* Fix Standalone build
* fix: use subagentTerminalOutputLineLimit in StandaloneTerminalManager.processOutput
Match the VSCode TerminalManager logic to properly use subagentTerminalOutputLineLimit (2000) for subagent commands instead of always falling back to terminalOutputLineLimit (500).
* feat: add TerminalManager to HostProvider for dependency injection
- Add TerminalManagerCreator type and createTerminalManager to HostProvider
- Extract ITerminalManager interface to shared/terminal/types for abstraction
- Refactor TerminalManager to implement ITerminalManager interface
- Create StandaloneTerminalManager for non-VSCode environments
- Update TerminalRegistry to use ITerminalManager via HostProvider
- Enable terminal management to work across different host environments
* feat: refactor terminal manager to use ITerminalManager interface
- Replace concrete TerminalManager/StandaloneTerminalManager types with ITerminalManager interface
- Use HostProvider.createTerminalManager() for host-agnostic terminal creation
- Simplify terminal execution mode logic in Task constructor
- Add dynamic imports for StandaloneTerminalManager when backgroundExec mode is used
- Improve logging for terminal manager selection
Add validation to ensure native tool calling is enabled when using
OpenAI Responses API format. Previously, the code would silently fall
back to completion stream when tools were not provided, which could
lead to unexpected behavior.
- Add explicit error when tools are missing for Responses API format
- Update tools parameter type to non-optional in createResponseStream