Connect CodeRabbit to AI Agents: Sync roles and code learnings
Give your AI agent CodeRabbit tools.
Connect CodeRabbit to AI Agents using Truto's /tools endpoint and SDK. This guide shows how to bypass the SaaS integration bottleneck, fetch LLM-ready schemas, handle 429 rate limits natively, and build multi-step workflows.
In this guide
- 01Fetch CodeRabbit Tools
- 02Bind Tools to the LLM
- 03Implement Rate Limit Handling
- 04Execute the Agent Loop
The guide
Learn how to securely connect CodeRabbit to AI Agents using Truto's /tools endpoint. Build autonomous workflows for managing seats, roles, and code learnings.
You want to connect CodeRabbit to an AI agent so your system can autonomously audit code review metrics, synchronize user roles, enforce seating limits, and retrieve deep scan security findings. Here is exactly how to do it using Truto's /tools endpoint and SDK, bypassing the need to build and maintain a custom CodeRabbit integration from scratch.
Building an AI agent is fundamentally an exercise in state management and prompting. Giving that agent reliable access to external DevSecOps infrastructure is where projects stall. If you decide to build a custom connector, you own the entire API lifecycle. You must write the JSON schemas for the Large Language Model (LLM) to understand the endpoints, handle the API token lifecycle, normalize pagination, and defensively program around rate limits. If your team uses ChatGPT, check out our guide on connecting CodeRabbit to ChatGPT, or if you are building on Anthropic's models, read our guide to connecting CodeRabbit to Claude. For developers building custom autonomous workflows, you need a programmatic way to fetch these tools and bind them to your agent framework.
This guide breaks down exactly how to fetch AI-ready tools for CodeRabbit, bind them natively to an LLM using frameworks like LangChain, LangGraph, CrewAI, or the Vercel AI SDK, and execute complex security and user management workflows. For a broader look at this design pattern across multiple SaaS applications, read our research on Architecting AI Agents: LangGraph, LangChain, and the SaaS Integration Bottleneck.
The Engineering Reality of the CodeRabbit API
Giving an LLM access to external data sounds simple in a prototype. You write a Node.js function that makes a fetch request and wrap it in an @tool decorator. In production against complex infrastructure systems like CodeRabbit, this approach collapses.
CodeRabbit's API introduces several specific integration challenges that break standard REST assumptions. If you hardcode these interactions into your agent, you will spend your sprints writing defensive integration code instead of improving your model's reasoning capabilities.
Dual Authentication Contexts
CodeRabbit relies on a split authentication model depending on the resource you are trying to access. Organization API keys are bound to a specific organization and return data exclusively for that entity. Workspace API keys are broader, returning data across every active organization in a workspace.
When you give an LLM direct API access, it has to magically understand which token to use for which endpoint. If you ask an agent to list repositories, it needs to know that using a workspace key requires explicitly passing an organization_id, whereas an organization key implicitly infers it. This contextual branching is a massive vector for LLM hallucinations. The Truto tool layer abstracts this auth complexity away. The agent simply calls the function, and the middleware handles the routing and parameter injection.
Deeply Nested Reachability Evidence
The CodeRabbit API provides profound insights into code security, specifically via its Deep Scan code findings. When querying these findings, the API does not just return a flat list of vulnerabilities. It returns complex, heavily nested JSON objects containing saved reachability evidence and multi-step call stacks.
Standard LLMs are trained to expect flat, intuitive JSON objects. Dumping a 5,000-line JSON payload containing raw call stacks directly into an LLM context window will immediately consume token limits and degrade the model's instruction-following capabilities. The agent needs a strict, normalized schema that extracts the specific repo_id, state, and high-level explanations without drowning in the metadata.
Strict Rate Limiting and Truto Passthrough
CodeRabbit strictly enforces rate limits on its API to prevent abuse. When building an agentic loop, an LLM might attempt to brute-force a search by firing dozens of API requests in a few seconds.
It is critical to understand how Truto handles this at the infrastructure level. Truto does not retry, throttle, or apply backoff on rate limit errors. When the upstream CodeRabbit API returns an HTTP 429 Too Many Requests, Truto passes that error directly to the caller. However, Truto normalizes the upstream rate limit information into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification.
Your agent framework must be engineered to catch these 429 errors, read the ratelimit-reset header, and implement exponential backoff on its own. We will cover the exact code implementation for this in the multi-step workflows section.
CodeRabbit Hero Tools for AI Agents
To safely expose CodeRabbit to your agent, you must restrict its action space. Providing an agent with 50 unstructured endpoints is a recipe for disaster. Instead, provide a curated set of deterministic tools.
Here are the highest-leverage CodeRabbit tools available via Truto's /tools endpoint. Every tool includes a strictly typed JSON schema that prevents the LLM from hallucinating arguments.
List All CodeRabbit Users
This tool retrieves all users within the CodeRabbit organization, including their seat assignments, roles, and workspace context. It is essential for auditing access and preparing data for bulk role changes. It handles the translation between provider user IDs and internal CodeRabbit IDs (cr_user_id).
"Audit the CodeRabbit user directory. Return a list of all users who currently have a seat assigned but hold the legacy 'viewer' role instead of 'developer'."
CodeRabbit Seats Bulk Assign
Managing seats individually is wildly inefficient. This tool allows the agent to bulk assign or unassign CodeRabbit seats for up to 500 users at once. Depending on the auth context, the agent must pass provider user IDs or emails. The tool returns a detailed status object indicating success, partial success, or failure for each user.
"Take the list of 15 newly onboarded engineers in the backend-services group and bulk assign them CodeRabbit developer seats."
List All CodeRabbit Security Code Findings
This read-only tool retrieves CodeRabbit Deep Scan code findings for the repositories in scope. It fetches the latest completed scan data, including reachability evidence and explanations. It supports filtering by state, repository ID, and organization ID, keeping the LLM context window focused on actionable vulnerabilities.
"Fetch all open security code findings for the 'auth-gateway' repository. Filter for high-severity issues and summarize the reachability evidence for the team."
List All CodeRabbit Review Metrics
Engineering managers need visibility into pull request velocity. This tool returns PR review metrics over a specified date range, providing per-pull-request records with URLs, merge times, review iterations, estimated review minutes, and comment categorization.
"Analyze CodeRabbit review metrics for the past 30 days. Identify any pull requests that required more than 4 review iterations and calculate the average estimated review minutes."
List All CodeRabbit Learnings
CodeRabbit allows teams to save specific "learnings" - customized context or rules that inform future AI code reviews. This tool lists these learnings, filterable by repository, author, file path, and usage statistics. It exposes exactly how often specific organizational knowledge is being applied during code reviews.
"Retrieve all CodeRabbit learnings for the 'frontend-monorepo'. Find any learnings authored by 'jdoe' that have a usage count of zero in the last 90 days."
CodeRabbit Seats Bulk Change Roles
When a team changes structure, permissions must follow. This tool allows the agent to execute bulk role changes for up to 500 users simultaneously. It requires a specific role ID and an array of user IDs, returning a strict success or failure payload per user.
"Change the role of all active contractors from 'developer' to 'restricted-reviewer' using the bulk role change tool."
To view the complete inventory of available tools, including detailed parameter schemas for custom role management, audit logging, and MCP server usage metrics, visit the CodeRabbit integration page.
Building Multi-Step Workflows
Standard integration tutorials show you how to make a single API call. AI agents do not make single API calls. They execute dynamic, multi-step loops where the output of one tool dictates the input of the next.
To build this, we use the Truto /tools endpoint to fetch the CodeRabbit tool definitions, bind them to an LLM, and execute an agent loop. Because Truto normalizes the CodeRabbit API into LLM-ready schemas, this logic works identically whether you use LangChain, Vercel AI SDK, or CrewAI.
The Architecture
The following architecture diagram illustrates how the agent interacts with the Truto tool layer, specifically highlighting the requirement for client-side rate limit handling.
sequenceDiagram
participant App as Your Agent App
participant LLM as LLM Provider
participant Truto as Truto Tool Layer
participant CodeRabbit as CodeRabbit API
App->>Truto: GET /integrated-account/{id}/tools
Truto-->>App: Returns JSON Schemas
App->>LLM: .bindTools(schemas)
loop Agent Execution
App->>LLM: Invoke with user prompt
LLM-->>App: ToolCall (e.g., list_all_code_rabbit_review_metrics)
App->>Truto: Execute ToolCall
Truto->>CodeRabbit: Proxy normalized request
alt HTTP 200 OK
CodeRabbit-->>Truto: Raw JSON
Truto-->>App: Clean LLM-ready JSON
else HTTP 429 Too Many Requests
CodeRabbit-->>Truto: 429 Error
Truto-->>App: 429 Error + ratelimit-reset header
Note over App: App reads header, waits, retries
App->>Truto: Retry ToolCall
end
App->>LLM: Provide tool response
endTypeScript Implementation with LangChain
Here is a production-ready example using the truto-langchainjs-toolset and LangGraph. This implementation explicitly demonstrates how to catch HTTP 429 errors from Truto, parse the standard IETF ratelimit-reset header, and execute exponential backoff.
import { ChatOpenAI } from "@langchain/openai";
import { TrutoToolManager } from "truto-langchainjs-toolset";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
// Initialize Truto SDK with your developer token
const truto = new TrutoToolManager({
apiKey: process.env.TRUTO_API_KEY,
});
async function executeCodeRabbitWorkflow(accountId: string, prompt: string) {
// 1. Fetch LLM-ready tools for the specific CodeRabbit account
console.log("Fetching CodeRabbit tools from Truto...");
const tools = await truto.getTools(accountId);
// 2. Initialize the LLM and bind the tools
const llm = new ChatOpenAI({
modelName: "gpt-4o",
temperature: 0
});
// 3. Create the agent executor using LangGraph
const agent = createReactAgent({
llm,
tools,
});
// 4. Custom invocation wrapper to handle Truto 429 Passthrough
let retries = 3;
let delay = 1000;
while (retries > 0) {
try {
const result = await agent.invoke({
messages: [["human", prompt]]
});
return result.messages[result.messages.length - 1].content;
} catch (error: any) {
// Inspect the error for a 429 status passed through by Truto
if (error.status === 429) {
console.warn("Rate limit hit. Truto passed 429 to client.");
// Read Truto's normalized IETF headers
const resetHeader = error.headers?.['ratelimit-reset'];
if (resetHeader) {
const resetTime = parseInt(resetHeader, 10);
const waitTime = Math.max(0, resetTime - Math.floor(Date.now() / 1000));
console.log(`Waiting ${waitTime} seconds per ratelimit-reset header...`);
await new Promise(res => setTimeout(res, waitTime * 1000));
} else {
// Fallback exponential backoff
console.log(`No reset header found. Backing off for ${delay}ms...`);
await new Promise(res => setTimeout(res, delay));
delay *= 2;
}
retries--;
} else {
// Re-throw non-429 errors
throw error;
}
}
}
throw new Error("Max retries exceeded for CodeRabbit workflow.");
}
// Execute a real workflow
const userPrompt = "List all CodeRabbit review metrics for the last 7 days. Find the PR with the highest estimated review minutes and summarize it.";
executeCodeRabbitWorkflow("cr-acct-xyz", userPrompt)
.then(console.log)
.catch(console.error);Workflows in Action
Abstracting the API complexity away allows your engineering team to focus on the actual business logic of the agent. Here is how that plays out in concrete, real-world scenarios specific to CodeRabbit.
Scenario 1: Automated Security Triage and Learning Generation
When a new vulnerability is merged, security teams spend hours writing custom SAST rules to prevent recurrence. An AI agent can automate this feedback loop directly within CodeRabbit.
"Check the open security code findings for the 'payment-processor' repository. If any findings contain a SQL injection vulnerability in the reachability evidence, update the CodeRabbit learning by ID 'learn-882' to strictly enforce parameterized queries on all new database commits."
Step-by-step Execution:
- The agent calls
list_all_code_rabbit_security_code_findingswithrepo_id="payment-processor"andstate="open". - The agent reads the normalized JSON, inspecting the
reachability_evidencearray for SQL injection signatures. - Upon detecting a match, the agent formulates a new instructional string for the AI reviewer.
- The agent calls
update_a_code_rabbit_learning_by_id, passingid="learn-882"and the newlearningtext, seamlessly refreshing the search embedding in CodeRabbit's backend.
The Result: The agent autonomously detects a systemic vulnerability pattern and immediately updates the organization's CodeRabbit embeddings to prevent similar code from passing review in the future.
Scenario 2: Contractor Offboarding and Audit Logging
Managing vendor access is a massive compliance headache. When a contractor rolls off a project, IT must revoke their code review access and pull audit logs for compliance verification.
"Find the user 'temp-dev-alpha' in the organization. Unassign their CodeRabbit seat, then retrieve all audit logs related to this user ID over the last 30 days and summarize their activity."
Step-by-step Execution:
- The agent calls
list_all_code_rabbit_usersto map the username 'temp-dev-alpha' to their specificcr_user_id. - The agent executes
code_rabbit_seats_bulk_assignwithaction="unassign"and passes the target user ID. - After receiving the success status, the agent calls
list_all_code_rabbit_audit_logs, filtering the results based on the targeted user ID and the date range. - The agent processes the log entries and returns a clean, plain-text summary to the IT admin.
The Result: A multi-system IT offboarding ticket is resolved in seconds without human intervention, maintaining strict compliance and enforcing seat limits automatically.
Moving from Scripting to Automation
Giving AI agents access to your DevSecOps tooling is a massive force multiplier, but only if the agent operates deterministically. By utilizing a unified tool layer to handle the CodeRabbit API's quirks, auth routing, and JSON normalizations, you strip away the hallucination risk.
Your engineering team no longer needs to write defensive parsing logic to handle deeply nested reachability trees or reverse-engineer CodeRabbit's ID mapping. Truto exposes stable, reliable tools, allowing you to focus on writing better prompts, tuning your agent framework, and securely handling client-side rate limit logic.
Stop managing HTTP requests and start orchestrating intelligence.
FAQ
- Does Truto automatically handle API rate limits for CodeRabbit?
- No. Truto does not retry, throttle, or apply backoff on rate limit errors. When CodeRabbit returns an HTTP 429, Truto passes that error directly to the caller, normalizing the upstream rate limit information into standardized IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). Your application must implement retry and backoff logic.
- Which AI agent frameworks can I use with Truto's CodeRabbit tools?
- Truto's unified tools are framework-agnostic. Because the tools are served as standard JSON schemas via the /tools endpoint, they can be bound to any framework, including LangChain, LangGraph, CrewAI, and the Vercel AI SDK.
- How does an agent know which CodeRabbit authentication token to use?
- Truto's integration middleware abstracts the authentication complexity. The agent simply calls the unified tool, and Truto manages the underlying routing, injecting the correct Workspace or Organization scoped keys as required by the CodeRabbit API.
- Can I use Truto to bulk assign seats and roles in CodeRabbit?
- Yes. Truto exposes tools like code_rabbit_seats_bulk_assign and code_rabbit_seats_bulk_change_roles, allowing an AI agent to execute bulk operations on up to 500 users per request, ensuring efficient identity management.