Roo Code
Multi-mode open-source AI development agent for editors
Tags:AI programming toolsWhat is Roo Code?
Roo Code is an open-source AI programming agent that runs within Visual Studio Code; it originated from the Cline ecosystem and is now maintained independently by the Roo Code team. It integrates large language models into the editor, enabling users to analyze projects using natural language, modify multiple files, execute commands, debug errors, and break down complex tasks.
Roo Code is not a chat plugin that comes with predefined models; it is responsible for handling workflows, tools, context, and editing, while the recommendations are provided by Roo Router, external model APIs, cloud gateways, or local models.
Multi-file code editing
Roo can read project files, search for code, create new files, and make precise modifications. Each invocation of the tool is displayed in a dialog, allowing the user to review the changes, save them, or reject them.
Cross-file modifications are suitable for adding new functions, migrating interfaces, completing testing, and performing code restructuring; however, such modifications may affect code that is not related to the model. The task should specify the target directory, the elements that must not be modified, and the commands for verification.
Execution of terminal commands
The agent can run installation, building, testing, Linting, and Git commands in the VS Code terminal, and make further corrections based on the output. Users can approve tasks one by one, or set up automatic approval for specific actions.
Automatic approval increases the risk of mistakes. Do not grant unlimited permissions for tasks such as deletion, deployment, use of package manager scripts, and execution of commands that contain production credentials; it is advisable to set limits on the number of consecutive requests.
Code mode
The Code mode is designed for routine implementation tasks; it allows for reading, editing, and executing commands, and is suitable for directly developing functions, fixing bugs, and restructuring code. It typically provides fairly comprehensive access to project tools.
Do not switch directly to Code mode when the requirements are not clear. First use Ask or Architect to clarify the scope, which can help avoid repeated modifications and associated costs.
Architect pattern
The Architect pattern focuses on understanding codebases, design solutions, breaking down tasks, and evaluating technical options; it limits the ability to write code directly by default. The current version intelligently selects search and contextual tools, including available semantic search functions.
Architecture recommendations still need to take into account project constraints, team experience, and actual performance data. Once the plan is ready, it can be switched to Code mode for implementation.
Ask and Debug modes
The Ask mode is used for explaining code, answering technical questions, and reading through projects; it is not focused on writing. The Debug mode helps in analyzing logs, error stacks, execution results, and potential causes, and it suggests or carries out verification steps.
During debugging, it is necessary to provide a minimal example that reproduces the issue, the actual error, and the version of the environment. Allowing the model to modify the code directly in the absence of sufficient evidence can easily hide the true cause of the problem.
Custom mode
Users can create custom patterns to define role descriptions, tool permissions, file scopes, and specific instructions, such as for security reviews, test engineers, React components, document authors, or read-only reviewers. Project-level patterns can be shared alongside the repository.
The custom mode should adhere to the principle of least privilege, allowing only the tools necessary for completing the task. Excessively long or conflicting instructions can reduce the stability of the model’s performance.
Task decomposition and sub-tasks
Roo enables the creation of subtasks and the specification of patterns, allowing complex tasks to be carried out in stages such as research, planning, implementation, and testing. The history view displays a recursive subtask tree, helping users to see the assignment hierarchy.
Multiple levels of delegation increase the risks of model calls, context switching, and loss of state. Each sub-task should have clear input, output, and termination conditions.
Todo list
For complex tasks, a Todo list can be used to record pending, in-progress, and completed steps, thereby preventing tasks from being overlooked during long sessions. The agent will proceed with the work using this list.
The Todo status is merely a record of the proxy; it is not proof that the test has been passed. Final acceptance is still based on code differences, as well as the results of building, testing, and running the application.
Checkpoints – points for verification
Roo creates snapshots of the workspace using a separate shadow Git repository, without relying on the main Git history of the project. Users can compare or restore these checkpoints, which is useful for trying out different approaches and reverting unsatisfactory changes.
Checkpoints keep track of the files in the workspace, and they operate independently from the rooignore rules that limit what AI can read. Large repositories, caches, and Git LFS content should be configured to be excluded; checkpoints cannot replace proper version control and backup systems.
Code repository index
The code repository index enables semantic search through embedding and the Qdrant vector database, helping agents to find relevant implementations within large projects. The initial indexing process is costly, but subsequent incremental updates are generally cheaper.
This feature requires the integration of model keys and Qdrant, and it incurs additional costs related to storage and inference. For sensitive code, it is necessary to determine the location of the vector database as well as the access permissions.
Contextual citation
Users can use reference syntax to include information about files, folders, terminals, error lists, and other items, thereby preventing the model from making guesses. The API configuration file also allows different providers, models, and parameters to be selected for various tasks.
Including the entire folder will quickly expand the context. Interfaces, errors, and related files should be provided first, to prevent irrelevant data and keys from being sent to the model.
MCP external tools
Roo Code supports the Model Context Protocol, enabling connections to databases, APIs, documents, browser automation, and custom scripts. MCP servers can be managed through global or project-specific configurations, and the tools can be enabled, disabled, or approved individually.
The MCP server carries out the actual operations locally or remotely; before installation, it is necessary to verify the source, commands, network connections, and key permissions. Project configurations should not contain plaintext tokens.
Changes in browser automation
Early versions of Roo Code included the Puppeteer browser tool, which allowed users to open web pages, click on elements, and take screenshots. Starting with version 3.48, this built-in browser tool was removed; nowadays, browser operations must be carried out using Playwright or other MCP servers.
The browser_action element and the built-in session panel from the older tutorials are no longer applicable in the new versions. Browser MCP also requires approval, as well as measures to guard against malicious alerts on web pages.
Marketplace market
Roo Marketplace offers organized MCPs and patterns that users can install in their current projects or in the global environment, in order to enhance framework development, documentation, database management, and automation capabilities.
Just because something is included does not mean there are no security risks. After installation, it is necessary to examine the generated configuration files, dependencies, and tool permissions, as well as to lock down a reproducible version.
Supported model providers
Roo Code supports Anthropic, OpenAI, Amazon Bedrock, Google Vertex AI, Gemini, DeepSeek, Moonshot, Mistral, OpenRouter, Requesty, Vercel AI Gateway, xAI, Z AI, LiteLLM, as well as services that are compatible with OpenAI.
The list of providers changes as new versions are released or old ones are removed. In version 3.48, some built-in configuration forms that were used infrequently were removed; the existing credentials remain, but they need to be transferred to another gateway or a compatible interface.
Roo Code Router
Roo Router offers a model-based approach that eliminates the need for manual configuration of multiple API keys; after users top up their account, they can select the desired models, and the inference process consumes resources based on the token associated with those models as well as the current routing costs. It is suitable for users who want to get started quickly and have a unified billing system.
The router does not offer unlimited use at a fixed monthly fee; the actual cost is influenced by factors such as the model used, the context, caching, inference tokens, and the number of task executions. The final bill will be based on the details provided in the account statement.
Provide your own API key
Users can connect directly to accounts such as Anthropic, OpenAI, OpenRouter, Bedrock, Vertex, etc., with the respective providers charging for the service. The API configuration files allow different models, base addresses, and rate limits to be saved for various modes.
Keys are stored in VS Code’s Secret Storage and are not displayed in plain text; however, care should still be taken when exporting them, synchronizing them, or using them within plugins. Do not include tokens in the repository configuration.
Local model
Roo supports Ollama and LM Studio, allowing models to be run on the local device or one’s own server, which reduces the need to send code to third-party cloud services. The Ollama configuration takes into account the model’s own context window.
Agents rely on reliable native tool calls; ordinary chat models or incomplete OpenAI-compatible interfaces may not function. Models that handle long contexts also require significant amounts of memory and GPU memory.
VS Code Model API
The experimental VS Code Language Model API allows Roo to use the models provided by GitHub Copilot or other extensions. The available models, quotas, and prices are determined by the upstream extensions, and Roo has no direct control over the costs.
This interface may still change, and it is not suitable to be used as the sole source of model data for the team without first conducting tests.
Roo Code usage tutorial
Complete a basic task.
- Define the code tasks to be carried out in Roo Code, the scope of the repository, and the acceptance criteria.
- Connect to or import the test project, and first back up the current branch;
- First, use multi-file code editing to generate a plan, and then confirm the files that need to be modified;
- Use terminal commands to make minor changes;
- Run tests, static checks, and builds; unverified code is not accepted directly.
- Manually check permissions, keys, dependencies, and handle exceptions before merging;
Create reusable professional workflows
- Select a low-risk, real-world project as a template;
- Fix the order of multi-file code editing, terminal command execution, and Code mode usage;
- Record the environment, model, prompts, and failure conditions;
- Set up manual approval for write, deploy, and delete actions;
- Compare speed, cost, test pass rate, and the amount of rework;
- Expand to a team or production environment only after stability has been verified;
Cost display and limitations
- Roo will display in the conversation history the inputs, outputs, cache data, as well as an estimated cost for some of the inference tokens;
- Users can set the maximum number of consecutive requests that can be approved automatically; once this limit is reached, the process is paused and re-confirmed.
- The displayed amount is only an estimate; the final amount will be as stated in the provider’s invoice.
- Reducing irrelevant context, breaking down tasks, using caching, and selecting models based on difficulty can help control costs;
Roo Code CLI
The project also offers an experimental Roo CLI that allows tasks to be initiated from the terminal, sessions to be resumed, and task configurations to be transmitted. The current pre-release version requires Node.js 20 or higher, and it is available for compilation on macOS Apple Silicon as well as on Linux x64 and ARM64 platforms.
The CLI is still evolving rapidly; some versions include tools and commands for automatic approval by default. Before using it in production, it is necessary to check the current settings and ensure that manual approval is enabled.
Installation method
The most common approach is to install Roo Code from the VS Code Extensions marketplace; after opening the sidebar, select the model provider and configure the key. It is also possible to download a VSIX file from the official GitHub releases for offline or controlled deployment.
Companies should fix the version numbers for extensions, review the update notes, and apply uniform configurations through VS Code policies. Version upgrades may result in the removal of certain tools or providers, or changes to the approval processes.
Roo Code price
The VS Code extension is free of charge, and there is no mandatory Pro subscription that must be purchased. When using external APIs, the cost is determined according to the rates set by the model provider.
The Roo Router uses a quota-based system with pricing based on usage, while local models require the user to bear the costs associated with hardware and maintenance.
The information related to the old Cloud packages and promotional models changes frequently; the current website focuses more on the self-hosted cloud proxy Roomote. Before making a purchase, it is necessary to refer to the real-time price of the models in your account as well as the details available on the page for the new products.
Roo Code Cloud and Roomote
The cloud proxy solution developed by the Roo team is evolving into Roomote – a self-hostable, model-agnostic tool that can connect to repositories, issue tracking systems, monitoring tools, and data systems; it executes tasks in an isolated environment and generates PRs along with previews.
Roomote is not the same product as the local Roo Code extension; its code is licensed under the Fair Core license with a delay before it becomes Apache 2.0 licensed, and it should not be mistaken for having the same pure Apache open-source license as the Roo Code extension.
GitHub and the open-source status
The official repository for Roo Code extensions is licensed under Apache License 2.0; the source code, issues, and releases are made available publicly, allowing for use, modification, and distribution in accordance with this license. The project is primarily developed using TypeScript.
The open-sourcing of the source code does not mean that models such as Claude, GPT, and Gemini are also open-source; nor does it imply that inference using Roo Router is free. Cloud Roomote comes with its own separate license.
Privacy and security
Roo processes the code, hints, terminal output, and tool results provided by the user, and sends them to the selected model provider. The project offers optional telemetry as well as rooignore files to limit the scope of what the AI can access.
Ignoring a file does not prevent checkpoints from saving the same file, nor can it replace the permissions provided by the operating system. Enterprises should establish model data policies, an MCP allowlist, network controls, and secret scanning mechanisms.
Which users is it suitable for?
- Developers who wish to use proxy programming in VS Code;
- Users who need to switch freely between Claude, OpenAI, Gemini, and local models;
- Teams that wish to use different modes to control planning, implementation, and debugging permissions;
- Advanced users who need MCP to connect to databases, documents, and browser tools;
- Engineers who place emphasis on open source, checkpoints, and configurable approval processes.
Product advantages
- Apache 2.0 is open-source and model-agnostic;
- The configuration of patterns, sub-tasks, and tool permissions is flexible;
- Supports multi-file editing, terminals, indexing, and checkpoints;
- MCP and Marketplace expand external capabilities;
- Supports cloud APIs, routers, and local models;
- It can display the Token and cost, and limit automatic calls.
Restrictions and Precautions
- Roo has many features and a complex setup, which presents a certain barrier for beginners who have no knowledge of model APIs or permissions.
- The costs associated with the model and MCP can increase rapidly for long-running tasks;
- Automatic approval, experimental CLI, and external MCPs can all perform dangerous operations;
- Git branches, minimum permissions, request limits, testing, and manual review should be utilized;
Frequently Asked Questions
Is Roo Code free?
The expansion is available for free and on an open-source basis; users are responsible for the costs associated with the model APIs, Roo Router quotas, and local hardware.
Does Roo Code support Claude?
Direct connection to Anthropic is supported; Claude can also be used through Bedrock, Vertex, OpenRouter, and other gateways.
Does Roo Code support local models?
It supports Ollama and LM Studio, but the models must be able to reliably call the native tools.
Does Roo Code have a browser feature?
The new version has removed the built-in browser tools; it is necessary to install MCP servers such as Playwright in order to achieve browser automation.
Does Roo Code support MCP?
Supported: Servers can be configured at the global or project level, allowing separate control over the activation and approval of tools.
Is Roo Code open source?
It is open source – the VS Code extensions are licensed under the Apache 2.0 license, while the Roomote cloud proxy uses a different license.
Guigong Network Security Registration No. 45132202000164