Skip to content
| Marketplace
Sign in
Visual Studio Code>Education>Not a Proxy — Understand AI-Generated CodeNew to Visual Studio Code? Get it now.
Not a Proxy — Understand AI-Generated Code

Not a Proxy — Understand AI-Generated Code

Bernardo Dias

|
1 install
| (0) | Free
Don't be a human proxy for your AI. Flag the code you don't understand right where it is, keep your questions in a structured JSON file, and have Claude explain them.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Not a Proxy — Understand AI-Generated Code

Don't be a human proxy for your AI.

In "YOLO mode" an AI agent writes hundreds of lines in minutes. The code works, the PR gets merged — and then someone asks "why does this class exist?" in a meeting and nobody can answer. The developer was just a proxy between the AI and the repository.

Not a Proxy turns "I don't get this" into a tracked, answerable question, right where the code is.

How it works

  1. Flag it in place. Select the code you don't understand (or just put the cursor inside a class/function), right-click → I Don't Get This: Ask a Question Here, or press Ctrl+Alt+Q (Cmd+Alt+Q on macOS). Type your question: "What does this class do?", "Why a retry here?". Not about a specific snippet — "How does the login flow work end to end?", an idea you want to check? Use Ask a General Question (💡 in the sidebar, or Ctrl+Alt+Shift+Q). It is saved with "location": null and Claude explores the project to answer it.

  2. It goes to a structured JSON file. Each question is saved to .not-a-proxy/questions.json with the file, line range, enclosing symbol (OrderService > calculateShipping), language and a copy of the snippet. The file also carries instructionsForAI, so any AI that reads it knows what to do.

  3. Ask Claude. From the sidebar, Ask Claude lets you pick where the question goes:

    • the Claude Code chat (if the Claude Code extension is installed) — a new conversation opens with the question in its input;
    • a running Claude session — the question is typed straight into that Claude prompt (press Enter to send, or enable notAProxy.submitToRunningSession);
    • another terminal — Claude is started there with the question;
    • a new Claude session — a new terminal is opened.

    Claude reads the JSON, explains the code in the chat and writes the answer back into the file. The sidebar updates by itself. Prefer another chat? Copy Prompt copies a self-contained prompt with the question and the code.

  4. Prove you got it. Mark as Understood requires you to explain the code in your own words. If you can't explain it in one or two sentences, you don't understand it yet.

Features

  • Question Farm 🌱 in the bottom panel: an idle pixel-art farm that keeps your questions in sight. Open questions grow as crops and each understood question becomes a tree in your knowledge orchard. Hover to see the question, click to open it, right-click to answer it, ask Claude, or change its status. New questions are planted with a little effect and sound (mute it from the farm's toolbar or with notAProxy.farm.sound).
  • Search and filters at the top of the list: type to filter by question, answer, your explanation, file or symbol (every word must match), and use the Open / Answered / Understood checkboxes to filter by status.
  • Two statuses: open ❓ and understood ✅. Having an answer doesn't close a question — 💬 just shows it has one. Change the status from the list or the farm (hover buttons or right-click).
  • Answer it yourself or with AI: Answer It Myself opens a Markdown editor and saving it (Ctrl+S) stores your answer; Ask Claude has Claude write it.
  • Sidebar with every question grouped by file. Hover to read the answer; click to jump to the code.
  • CodeLens above each flagged snippet showing the question and whether an answer is available.
  • Details view (Markdown preview) with question, snippet, AI answer and your explanation.
  • Ask all open questions in a single Claude session.
  • Status bar counter of questions you haven't understood yet.
  • Re-anchoring: if lines move, the question follows its snippet.
  • JSON schema validation for the questions file.

The questions file

{
  "version": 1,
  "instructionsForAI": "…",
  "questions": [
    {
      "id": "q-lx3k9a2f",
      "question": "What does this class do?",
      "status": "open",
      "createdAt": "2026-10-17T14:02:11.000Z",
      "location": {
        "file": "src/orders/order.service.ts",
        "startLine": 12,
        "endLine": 58,
        "symbol": "OrderService",
        "language": "typescript",
        "snippet": "export class OrderService { … }",
        "snippetTruncated": false
      },
      "answer": {
        "text": "It orchestrates…",
        "answeredAt": "2026-10-17T14:05:40.000Z",
        "source": "Claude Code"
      },
      "myExplanation": null,
      "understoodAt": null
    }
  ]
}

Commit it to share questions with your team and reviewers, or add .not-a-proxy/ to .gitignore to keep them private.

Settings

Setting Default Description
notAProxy.presetQuestions 6 common questions Questions you can pick instead of typing when asking about code. You can still type anything. Empty list = always type.
notAProxy.presetGeneralQuestions 4 common questions Same, for general questions.
notAProxy.claudePrompt see below Message sent to Claude by Ask Claude. Variables: ${questionsFile}, ${projectRoot}, ${questions}, ${ids}.
notAProxy.answerInstructions see below How the AI should answer (language, length, structure). Goes into the JSON's instructionsForAI and into Copy Prompt.
notAProxy.file .not-a-proxy/questions.json Questions file, relative to the workspace folder.
notAProxy.claudeCommand claude Command that starts Claude Code in the terminal.
notAProxy.submitToRunningSession false Also press Enter when typing into a running Claude session.
notAProxy.maxSnippetLines 150 Max lines copied into the JSON per question.
notAProxy.showCodeLens true Show questions as CodeLens above the code.

Customizing what is sent to Claude

Default notAProxy.claudePrompt:

Read ${questionsFile} (file paths inside it are relative to ${projectRoot}) and answer ${questions}. Follow the instructionsForAI field in that file: read the referenced code and whatever surrounds it, explain it here in the chat and write the answer back into the JSON (answer field; leave status as it is). Do not change the source code. Then stay available for my follow-up questions.

Default notAProxy.answerInstructions:

Answer in the language the question was written in, didactic and short: (1) what the code does, (2) why it was probably written this way and which alternative was discarded, (3) how it connects to the rest of the system, (4) "how to explain it in a meeting" in 2 or 3 sentences.

Clear either setting to go back to the default.

Credits

Question Farm art: Tiny Farm by Kenney, CC0.

Requirements

  • VS Code 1.90+
  • Claude Code CLI on your PATH for Ask Claude (optional — Copy Prompt works with any chat).
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft