---
title: VS Code Extension
icon: "lucide/Monitor"
description: Live preview your CopilotKit render hooks, A2UI catalog components, and AG-UI event stream — without leaving VS Code.
---
The CopilotKit VS Code extension is a three-in-one workbench for iterating on CopilotKit features inside your editor. Install it once and you get three sidebars under the CopilotKit activity-bar icon:
- **CopilotKit Hooks** — discover every `useCopilotAction`, `useRenderTool`, `useCoAgentStateRender`, etc. in your workspace, and live-preview their `render` components with auto-generated form controls.
- **A2UI Catalog** — live preview of your A2UI catalog components with fixture-driven scenarios and hot-reload on save.
- **AG-UI Inspector** — a real-time, color-coded, filterable stream of every AG-UI event your runtime emits.
No localhost server, no browser tab, no agent run required for the first two — you can iterate on rendering and UI structure entirely offline.
## Install
### Install the extension
Open VS Code, go to Extensions (`Ctrl+Shift+X` / `Cmd+Shift+X`), search for **CopilotKit**, and click Install. Or from a terminal:
```bash
code --install-extension copilotkit.copilotkit
```
### Open the CopilotKit activity bar
Click the **CopilotKit icon** in the Activity Bar on the left edge of VS Code. Three sidebar views expand underneath it, in this order:
1. **CopilotKit Hooks**
2. **A2UI Catalog**
3. **AG-UI Inspector**
Each is a self-contained tool — pick the one that matches what you're working on.
## Hook Explorer
You have a file that calls `useCopilotAction`, `useRenderTool`, or any other render-capable CopilotKit hook, and you want to iterate on the `render` prop. The **CopilotKit Hooks** sidebar lists every call-site in your workspace; clicking one opens a live preview panel where the `render` output is driven by a form built from your hook's declared parameters.
Extra niceties:
- A `▶️ Preview Component` CodeLens sits directly above every render-hook call in your editor — one click opens the preview for exactly that site.
- A `>` button on each sidebar row jumps to the source file.
- Cross-file hook switches auto-recover — a forced render-prop crash in one hook doesn't strand the whole webview.
Full walkthrough, hook coverage table, and limitations: [Hook Explorer](/troubleshooting/hook-explorer).
## A2UI Catalog
You have a file that exports an A2UI catalog via `createCatalog` (or imports `@copilotkit/a2ui-renderer`). The **A2UI Catalog** sidebar lists every catalog file in your workspace, plus any named fixtures you've defined alongside them. Clicking a component opens a live preview; edit the file and the preview updates on save while preserving interaction state.
### Find your catalog files
Open the **A2UI Catalog** sidebar. Each row is a catalog file (discovered by scanning for `@copilotkit/a2ui-renderer` imports). Rows with fixture files expand to show named scenarios; rows without one get an `auto` badge and render with a default empty surface.
Hover any row to reveal a `>` button that jumps to the source — on fixture rows, it jumps to the named fixture key inside the fixture file.
### Preview a component
Click a component row to open the preview. If the component has fixtures, click the row to expand and pick a fixture — otherwise the click previews directly. Edit the file and save — the preview rebundles and re-renders automatically.
### Add fixtures
Fixtures are named test-data scenarios. Create a fixture file next to your component:
`MyComponent.fixture.json`:
```json
{
"default": {
"surfaceId": "preview",
"messages": [
{ "beginRendering": { "surfaceId": "preview", "root": "root" } },
{ "surfaceUpdate": { "surfaceId": "preview", "components": [] } }
]
},
"empty state": {
"surfaceId": "preview",
"messages": []
}
}
```
`MyComponent.fixture.ts`:
```ts
export default {
"default": {
surfaceId: "preview",
messages: [
{ beginRendering: { surfaceId: "preview", root: "root" } },
{ surfaceUpdate: { surfaceId: "preview", components: [] } },
],
},
"empty state": {
surfaceId: "preview",
messages: [],
},
};
```
Each top-level key is a named fixture. Switch between them from the fixture dropdown inside the preview panel.
The extension validates fixture files on save and surfaces structural warnings (missing `surfaceId`, invalid `messages`, unknown component types) as in-editor diagnostics.
## AG-UI Inspector
You're running a CopilotKit runtime and something in an agent interaction is off — a tool call isn't firing, a state delta is wrong, or the run ends before the UI settles. The **AG-UI Inspector** sidebar opens a dedicated SSE connection to your runtime's `/cpk-debug-events` endpoint and renders every event in a filterable, color-coded stream. Click any event row to expand the full JSON payload.
Full walkthrough, event-type color reference, and production guard details: [AG-UI Event Inspector](/troubleshooting/event-inspector).