# VS Code 1.135 Rubber Duck: AI Agents Critique Each Other’s Code

> Source: <https://byteiota.com/vs-code-1-135-rubber-duck-ai-agents-critique-each-others-code/>
> Published: 2026-09-01 18:09:32+00:00

VS Code 1.135, released August 26, ships a feature called Rubber Duck: a secondary AI agent that critiques your primary coding agent’s plans, implementation, and tests before anything gets committed. When Claude runs your session, GPT-5.4 plays skeptic. In benchmarks on SWE-Bench Pro, that pairing closed 74.7% of the performance gap between Claude Sonnet 4.6 and Opus 4.6 — without swapping the primary model. It’s a simple idea that should have shipped two years ago: one AI watching another’s work catches blind spots that self-reflection can’t.

## Why Self-Reflection Doesn’t Cut It

The core problem with asking an AI to review its own code is that it shares the same training biases as the code it just wrote. Research on [Multi-Agent Reflexion (2025)](https://arxiv.org/pdf/2512.20845) documented “degeneration of thought” — when a model reflects on flawed reasoning, it tends to reinforce that reasoning rather than escape it. The same assumptions that produced the bug show up in the review of the bug.

Rubber Duck sidesteps this by using a model from a different AI family. When Claude is driving, the critic runs on GPT-5.4. GitHub says the appropriate critic model is selected automatically — developers don’t configure anything. The pairings are intentional: “a model reviewing its own work is still bounded by its own training biases,” as GitHub put it in [the feature announcement](https://github.blog/ai-and-ml/github-copilot/github-copilot-cli-combines-model-families-for-a-second-opinion/).

## When It Runs and What It Returns

Rubber Duck activates automatically at three moments where catching problems early matters most:

**After plan drafting**— catches architectural decisions before they shape the entire implementation** After complex implementation**— reviews intricate code for edge cases and design flaws** After test writing**— identifies coverage gaps before execution

It also fires when the primary agent gets stuck in a loop. You can invoke it manually with `/rubber-duck`

or just say “rubber duck your plan” in the chat. The agent is read-only — it can critique but cannot edit files or run commands. Findings are bucketed into three categories: blocking issues, non-blocking issues, and suggestions. Style and minor refactoring are explicitly ignored.

## Three Real Bugs It Caught

GitHub shared three examples from evaluation runs on real-world codebases — exactly the kind of bugs that slip through AI-generated code and casual human review alike:

**OpenLibrary async scheduler:** The primary agent wrote a scheduler that would start and immediately exit, running zero jobs. The inner task it did run was itself an infinite loop.**OpenLibrary Solr query:** A loop silently overwrote the same dictionary key on every iteration, causing three Solr facet categories to disappear from every search result.**NodeBB email confirmation:** Three files read from a Redis key that the new code stopped writing, breaking the confirmation UI and cleanup paths entirely.

None of these are subtle algorithmic puzzles. They’re structural errors — wrong assumptions about control flow, silent data overwrites, broken cross-file dependencies — that a different perspective surfaces quickly. That’s the argument for cross-model review in a sentence.

## The Caveats Are Real

Rubber Duck is experimental. It adds latency to agent sessions and consumes additional tokens — GitHub hasn’t confirmed whether those calls count against your Copilot quota separately. More importantly, it’s still AI-generated critique. A second model catching more edge cases doesn’t mean it catches the right ones, and it definitely doesn’t replace human code review. The feature is best understood as an additional filter in the pipeline, not a quality guarantee.

Early users noted that the presence of a reviewer may cause the primary model to reason more carefully upfront — a plausible psychological effect that’s hard to measure at scale. Pricing transparency for the additional model calls is still an open question.

## The Agent Host Protocol Underneath

Rubber Duck sits on top of a more significant architectural shift in 1.135: the **Agent Host Protocol (AHP)**. VS Code now runs agent sessions in a dedicated process, separate from any individual editor window. Sessions persist when you close a window, can be connected from multiple windows simultaneously, and can be continued from other Copilot surfaces — CLI, standalone app — using the `chat.agentSessions.showExternal`

setting.

This transforms VS Code from an editor with AI features into a runtime that hosts agent sessions. Rubber Duck is the first feature to exploit that architecture with a multi-model design. It won’t be the last.

## How to Try It Now

Rubber Duck requires a Copilot Pro+ subscription with the GitHub Copilot CLI installed and a Claude model selected in the model picker. Run `/experimental`

to enable it, then use `/rubber-duck`

to invoke manually or let it fire automatically at key checkpoints. The [full VS Code 1.135 release notes](https://code.visualstudio.com/updates/v1_135) and [official Rubber Duck documentation](https://docs.github.com/en/copilot/concepts/agents/copilot-cli/rubber-duck) cover setup in detail.

The 74.7% benchmark number is worth taking seriously. It suggests the next gains in AI coding quality won’t come from waiting for bigger models — they’ll come from adversarial pipelines where AI output gets challenged before it ships. VS Code just made that the default workflow for Copilot users.
