{
  "markdown": "# OzBridge — Warp Oz for any IDE or agent, via MCP\n[![Build](https://github.com/sena-labs/OzBridge/actions/workflows/ci.yml/badge.svg)](https://github.com/sena-labs/OzBridge/actions/workflows/ci.yml)\n[![VS Code](https://img.shields.io/badge/VS%20Code-%5E1.96.0-blue)](https://code.visualstudio.com/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n![OzBridge screenshot](media/screenshot.png)\n## What is OzBridge?\n\n**OzBridge is an open-source [Model Context Protocol](https://modelcontextprotocol.io)\n(MCP) server and VS Code extension that runs Warp Oz cloud and local agents from any\nMCP-compatible client — GitHub Copilot Chat, Claude Code, Cursor and Codex CLI.**\n\n> **Independent extension** — not affiliated with, endorsed by, or sponsored by Warp, Inc.\n> **Warp™** and **Oz™** are trademarks of Warp, Inc., used here nominatively only to\n> describe interoperability. OzBridge uses solely Warp's **documented public interfaces**\n> (the `oz` CLI, the Model Context Protocol, and the `WARP_OUTPUT_FORMAT` env var); it does\n> not modify, reverse-engineer, or compete with Warp. See [DISCLAIMER](DISCLAIMER.md).\n\nRun it embedded in VS Code — where Oz shows up natively as the `@oz` **Chat\nParticipant** and as **Agent-Native Language Model Tools** that Copilot Agent\nmode invokes autonomously — or expose the same Oz toolset over HTTP+SSE so\n**Claude Code, Cursor and Codex** drive Oz too. No editor at all? Ship the\nstandalone [`@sena-labs/oz-mcp-server`](packages/oz-mcp-server) and point any\nMCP client at it.\n\n```mermaid\nflowchart LR\n    subgraph clients[\"MCP clients\"]\n        CC[\"Claude Code\"]\n        CU[\"Cursor\"]\n        CX[\"Codex CLI\"]\n    end\n    VSC[\"VS Code<br/>Copilot Chat\"]\n\n    clients -->|\"HTTP + SSE\"| BR\n    VSC -->|\"@oz participant<br/>LM Tools\"| BR\n\n    BR[\"OzBridge<br/>(6 MCP tools)\"] -->|\"spawn\"| CLI[\"oz CLI\"]\n    CLI -->|\"local run\"| WS[\"Your workspace\"]\n    CLI -->|\"cloud run\"| CLOUD[\"Warp Oz cloud\"]\n```\n\n\n## Feature gallery\n\n### Runs & Resources\n\n![OzBridge sidebar with active runs, history and schedules](media/screenshot-runs.png)\n\n### Warp Drive\n\n![Warp Drive prompt and skills preview inside VS Code](media/screenshot-drive.png)\n\n### MCP bridge\n\n![Embedded MCP bridge status with registered clients](media/screenshot-mcp.png)\n\n### Dashboard\n\n![OzBridge dashboard with analytics and failure triage](media/screenshot-dashboard.png)\n\n---\n\n## Table of Contents\n\n- [Features](#features)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Connect your MCP client](#connect-your-mcp-client)\n  - [How do I use Warp Oz in Claude Code?](#how-do-i-use-warp-oz-in-claude-code)\n  - [How do I use Warp Oz in Cursor?](#how-do-i-use-warp-oz-in-cursor)\n  - [How do I use Warp Oz in Codex CLI?](#how-do-i-use-warp-oz-in-codex-cli)\n  - [How do I use Warp Oz in VS Code?](#how-do-i-use-warp-oz-in-vs-code)\n- [Usage](#usage)\n  - [Chat Participant (`@oz`)](#chat-participant-oz)\n  - [Slash Commands](#slash-commands)\n  - [Agent Mode — Language Model Tools](#agent-mode--language-model-tools)\n- [Tools](#tools)\n- [Configuration](#configuration)\n- [Architecture](#architecture)\n- [Development](#development)\n- [Contributing](#contributing)\n- [Troubleshooting](#troubleshooting)\n- [FAQ](#faq)\n- [License](#license)\n\n> **New to Warp or to VS Code extensions?** The\n> [Quick Start guide](https://sena-labs.github.io/OzBridge/QUICK-START.html) is a\n> step-by-step visual walkthrough — prerequisites, per-OS install, first run,\n> every slash command, settings and troubleshooting — written for readers with\n> no prior setup. Full documentation site: <https://sena-labs.github.io/OzBridge/>.\n\n---\n\n## Features\n\n- **MCP bridge — Warp Oz for any client** — expose the Oz toolset as a Model Context Protocol server over HTTP+SSE so **Claude Code, Cursor and Codex** drive Oz through the same tools Copilot sees. Run it embedded in VS Code (opt-in) or fully standalone via [`@sena-labs/oz-mcp-server`](packages/oz-mcp-server). See [`docs/MCP.md`](docs/MCP.md).\n- **`@oz` Chat Participant** — interact with Warp Oz agents from the VS Code chat panel.\n- **Agent-Native Language Model Tools** — Copilot Agent mode can invoke Warp Oz directly, without typing `@oz`.\n- **One-click model selection** — pick the Oz model from a QuickPick (`OzBridge: Select Model`), the `$(sparkle)` status-bar indicator, or `@oz /models <id>` — no hand-typing an id into settings. Agents switch it via the MCP tools `oz_list_models` / `oz_set_default_model`.\n- **Warp sidebar + status bar** — Activity Bar view with Active Runs, History, Schedules, Environments, MCP Servers and Secrets, plus a `$(cloud) Warp: N active` indicator and a `$(sparkle) <model>` model indicator (click to switch).\n- **Context variables & Warp handoff** — inline `#warp.env`, `#warp.profile`, `#warp.model`, `#oz.history` and `#oz.run/<id>` tokens expanded into any `/run` or `/cloud` prompt, plus a one-click handoff to an actual Warp terminal.\n- **Per-workspace config** — optional `.warp/warp-bridge.yaml` committed to the repo overrides `ozBridge.*` settings for everyone who opens the project. Precedence: YAML > VS Code settings > defaults. Secrets like `mcpBearerToken` and platform-specific `ozPath` are deliberately excluded.\n- **9 slash commands** covering the full agent workflow: `/run`, `/cloud`, `/status`, `/history`, `/schedule`, `/models`, `/mcp`, `/config`, `/init`.\n- **IDE context injection** — automatically includes workspace path, active file, selection and diagnostics in every prompt.\n- **Agent skill detection** — maps prompt keywords to the 7-agent pipeline (spec, design, implement, review, test, deploy, maintenance).\n- **Cloud run polling** — exponential-backoff polling with real-time progress updates in the chat stream.\n- **Robust JSON parser** — 5-level fallback for mixed text/JSON CLI output.\n- **Configurable** — every setting is exposed via the VS Code Settings UI under `ozBridge.*`.\n- **Minimal runtime footprint** — one bundled workspace package (`copilot-chat-toolkit`) plus the `vscode` API; no third-party network code. Production bundle ~160 KB.\n\n## Requirements\n\n- **VS Code** ≥ 1.96.0 (the `@oz` participant requires the stable Chat Participant API; LM Tools additionally require `vscode.lm.registerTool`).\n- **[Warp Terminal](https://www.warp.dev/)** installed, with the `oz` CLI accessible in `PATH`.\n- A **Warp account**, signed in via `oz login`.\n- **GitHub Copilot Chat** extension (optional but required to actually invoke `@oz` or use Agent mode tools).\n\n## Installation\n\n### From a registry\n\nStarting with `v0.9.0`, OzBridge is published to both registries on\nevery tagged release.\n\n**VS Code Marketplace** (Stable / Insiders / Cursor with Microsoft\nmarketplace access):\n\n```bash\ncode --install-extension sena-labs.ozbridge\n```\n\n**Open VSX** (VSCodium, Gitpod, Theia, Cursor with Open VSX mirror):\n\n```bash\ncodium --install-extension sena-labs.ozbridge\n# or, inside the editor GUI, search for \"OzBridge\" on open-vsx.org\n```\n\nDirect links:\n\n- Marketplace — <https://marketplace.visualstudio.com/items?itemName=sena-labs.ozbridge>\n- Open VSX — <https://open-vsx.org/extension/sena-labs/ozbridge>\n\n### From VSIX (local)\n\n**Option A — VS Code GUI (recommended):**\n\n1. Press `Ctrl+Shift+P` (or `Cmd+Shift+P` on macOS).\n2. Type **\"Extensions: Install from VSIX…\"**.\n3. Select the `ozbridge.vsix` file.\n\n**Option B — CLI:**\n\n```bash\ncode --install-extension ozbridge.vsix\n```\n\n> **Note:** on Windows `code` may not be in your `PATH`. Use the full path or\n> the GUI method above.\n\n### From source\n\n```bash\ngit clone https://github.com/sena-labs/OzBridge.git\ncd OzBridge\nnpm install\nnpm run build\n```\n\nThen press `F5` in VS Code to launch the Extension Development Host with the\nbuilt extension loaded.\n\n### Verify the installation\n\n1. Open the Copilot Chat panel (`Ctrl+Shift+I` / `Cmd+Shift+I`).\n2. Type `@oz /config` and submit.\n3. The panel should show a table with the current configuration and the\n   detected Oz CLI path. If the CLI is missing you will see an *\"Install\n   Warp\"* action button that opens the download page.\n\n## Connect your MCP client\n\nOzBridge exposes the same six Oz tools to every MCP client. Start the bridge\nfirst — either enable the embedded server in VS Code (`\"ozBridge.mcpEnabled\": true`,\nthen **OzBridge MCP: Start**) or run the standalone package:\n\n```bash\nnpx -y @sena-labs/oz-mcp-server\n```\n\nBoth listen on `http://127.0.0.1:3847/sse` by default. Set\n`ozBridge.mcpBearerToken` to require an `Authorization: Bearer <token>` header;\nomit the `headers` block below when auth is disabled.\n\n### How do I use Warp Oz in Claude Code?\n\nAdd to `~/.claude.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"oz-bridge\": {\n      \"type\": \"sse\",\n      \"url\": \"http://127.0.0.1:3847/sse\",\n      \"headers\": { \"Authorization\": \"Bearer my-secret\" }\n    }\n  }\n}\n```\n\n### How do I use Warp Oz in Cursor?\n\nAdd to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"oz-bridge\": {\n      \"url\": \"http://127.0.0.1:3847/sse\",\n      \"headers\": { \"Authorization\": \"Bearer my-secret\" }\n    }\n  }\n}\n```\n\n### How do I use Warp Oz in Codex CLI?\n\nAdd to `~/.codex/config.toml`:\n\n```toml\n[[mcp.servers]]\nname = \"oz-bridge\"\nurl = \"http://127.0.0.1:3847/sse\"\nauthorization = \"Bearer my-secret\"\n```\n\n### How do I use Warp Oz in VS Code?\n\nNo MCP wiring needed — install the extension and Oz is available immediately as\nthe `@oz` chat participant and as Language Model Tools that Copilot Agent mode\ncalls on its own. See [Usage](#usage).\n\nProtocol details, endpoint reference and a raw-`curl` cheatsheet live in\n[`docs/MCP.md`](docs/MCP.md).\n\n## Usage\n\n### Chat Participant (`@oz`)\n\nOpen the Copilot Chat panel and type `@oz` followed by your request:\n\n```text\n@oz fix the failing test in src/auth/login.ts\n```\n\nThe extension injects an IDE context block (workspace path, active file,\nselection, diagnostics) before the prompt and runs the Oz agent. Results\nstream back as markdown with action buttons (e.g. *Retry*, *Open run*).\n\n### Slash Commands\n\n| Command | Description | Example |\n| --- | --- | --- |\n| `/run` | Run an Oz agent locally in the workspace | `@oz /run refactor this function` |\n| `/cloud` | Run an Oz agent in the cloud (credits) | `@oz /cloud deploy to staging` |\n| `/status` | Show **active** runs (`QUEUED` / `INPROGRESS`) or detail by ID | `@oz /status` or `@oz /status <runId>` |\n| `/history` | Show **completed** runs (`SUCCEEDED` / `FAILED`) with optional filter | `@oz /history`, `@oz /history succeeded`, `@oz /history <runId>` |\n| `/schedule` | Create and manage scheduled runs | `@oz /schedule create daily \"0 9 * * *\" \"Run linting\"` |\n| `/models` | List available AI models, or set the default with `/models <id>` | `@oz /models` · `@oz /models claude-4-8-opus-max` |\n| `/mcp` | List configured MCP servers | `@oz /mcp` |\n| `/config` | Show current configuration | `@oz /config` |\n| `/init` | Scaffold Warp Skills and Rules files | `@oz /init` |\n\n#### `/history` filters\n\n```text\n/history               — list all completed runs (SUCCEEDED + FAILED)\n/history succeeded     — only SUCCEEDED runs\n/history failed        — only FAILED runs\n/history <runId>       — show details for a specific run\n```\n\n#### `/schedule` sub-commands\n\n```text\n/schedule list                                    — List all schedules\n/schedule create <name> \"<cron>\" \"<prompt>\"       — Create a schedule\n/schedule pause <id>                              — Pause a schedule\n/schedule unpause <id>                            — Resume a schedule\n/schedule delete <id>                             — Delete a schedule\n```\n\n### Agent Mode — Language Model Tools\n\nIn **GitHub Copilot Chat Agent mode**, Copilot can call Warp Oz directly\nthrough registered Language Model Tools — you don't need to prefix your\nrequest with `@oz`. Copilot selects the right tool based on the prompt\nand its declared `modelDescription`.\n\n| Tool | Reference | Behaviour |\n| --- | --- | --- |\n| `oz_run_local` | `#ozRunLocal` | Runs a local Oz agent in the current workspace. Injects IDE context by default (`includeIdeContext: false` to opt out). |\n| `oz_run_cloud` | `#ozRunCloud` | Launches a **cloud** Oz agent. Shows a confirmation dialog before consuming Warp credits. Polls to terminal state by default (`wait: false` returns immediately with the run id). |\n| `oz_get_run` | `#ozGetRun` | Fetches status + output of a specific run by id. Read-only. |\n| `oz_list_runs` | `#ozListRuns` | Lists recent runs with a status filter (`all`, `active`, `completed`, or a raw `OzRunStatus`) and optional `limit`. Read-only. |\n\nExamples:\n\n```text\n# Agent mode picks oz_run_local automatically:\nRun the unit tests locally via Oz.\n\n# Explicit tool reference (prefix with #):\nRun this refactor on cloud: #ozRunCloud refactor src/auth to hexagonal architecture\n\n# Query a previous run:\nCheck run #ozGetRun for run id run-abc123.\n```\n\nEach tool is declared in `package.json` under\n`contributes.languageModelTools` with a strict JSON `inputSchema`, so the\nmodel receives accurate type hints at tool-call time. Cloud tools always\nshow a confirmation dialog before running, regardless of the user's\n*Bypass Approvals* preference.\n\n### Sidebar & Status Bar\n\nThe extension contributes a dedicated **Activity Bar view** (*OzBridge\n→ Runs & Resources*) with five collapsible categories:\n\n- **Active Runs** — `QUEUED` + `INPROGRESS` (live-refreshed every 10 s).\n- **History** — `SUCCEEDED` + `FAILED`, capped at 20 entries per refresh.\n- **Schedules** — cron jobs from `oz schedule list`.\n- **Environments** — cloud environments from `oz environment list`.\n- **MCP Servers** — MCP integrations from `oz mcp list`.\n\nRight-click menu actions:\n\n- *Copy ID* on any run / schedule / environment / MCP node.\n- *Open in Browser* on a run node (opens `app.warp.dev/agents/<id>`).\n- *Pause / Resume / Delete* on schedule nodes (delete asks for confirmation).\n\nA **status bar item** (`$(cloud) Warp: N active`, right-aligned) mirrors the\nActive Runs count in real time and switches to `warningBackground` at 1–2\nactive runs or `errorBackground` at 3+. Clicking the indicator focuses the\nOzBridge sidebar.\n\n### Prompt variables\n\nInside any `@oz /run …` or `@oz /cloud …` prompt you can embed a small\nset of tokens that the extension resolves **locally** before sending the\nprompt to the Oz CLI. Unknown tokens (e.g. `#some.other`) are passed\nthrough unchanged.\n\n| Token | Expands to |\n| --- | --- |\n| `#warp.env` | Value of `ozBridge.defaultEnvironment` (or `(no default environment)` when empty). |\n| `#warp.profile` | Value of `ozBridge.defaultProfile`. |\n| `#warp.model` | Value of `ozBridge.defaultModel`. |\n| `#oz.history` | Markdown table of the last 10 runs from `oz run list`. |\n| `#oz.run/<id>` | Fenced JSON payload from `oz run get <id>` (truncated at 2 000 chars). |\n\nExample:\n\n```text\n@oz /cloud deploy branch #warp.env profile=#warp.profile given the last runs:\\n#oz.history\n```\n\n### Hand off to Warp\n\nTwo commands open a real Warp terminal (Warp ≥ 0.2024.x) via the\n`warp://action/new_tab` URI scheme:\n\n- **`Warp: Hand off to Warp terminal…`** (Command Palette) — asks for a\n  prompt and runs `oz agent run --prompt \"<prompt>\"` in a new Warp tab.\n- **`Warp: Hand off run to Warp terminal`** (sidebar context menu on any\n  run node) — runs `oz run get <runId>` so you can drill into the run\n  directly in the terminal.\n\nIf the `warp://` URL handler is not registered on the current platform,\nthe extension shows a modal with the exact command to copy into any\nshell as a fallback.\n\n## Tools\n\nSix MCP tools are exposed over the bridge. Copilot Agent mode invokes them\nnatively in VS Code; Claude Code, Cursor and Codex reach the same set through\nthe MCP server, embedded or standalone.\n\n| Tool | Purpose |\n| --- | --- |\n| `oz_agent_run` | Run `oz agent run` locally with a prompt. Returns the full run payload. |\n| `oz_agent_run_cloud` | Launch a cloud run. **Consumes Warp credits.** |\n| `oz_run_get` | Fetch a run's status and output by id. Read-only. |\n| `oz_run_list` | List recent runs; filter by `all` / `active` / `completed` / raw status, plus a numeric `limit`. |\n| `oz_list_models` | List the AI model ids available to the account and report the current default. Read-only. |\n| `oz_set_default_model` | Set the default Oz model by writing `defaultModel` into the workspace `.warp/warp-bridge.yaml`. |\n\nThe full JSON `inputSchema` for each tool is emitted verbatim by `tools/list`.\nSee [`docs/MCP.md`](docs/MCP.md) for protocol details, a raw-`curl` cheatsheet\nand the endpoint reference.\n\n## Configuration\n\nAll settings live under `ozBridge.*` in VS Code Settings\n(**File → Preferences → Settings**) or can be edited in `settings.json`.\n\n### Per-workspace overrides (`.warp/warp-bridge.yaml`)\n\nCommit a `.warp/warp-bridge.yaml` at the root of your repository and OzBridge\nwill merge its values on top of the VS Code settings for everyone\nwho opens the project. The file is reloaded automatically when it is\ncreated, changed or deleted — no VS Code reload required.\n\n```yaml\n# .warp/warp-bridge.yaml — committed to Git, shared across the team.\ndefaultProfile: team-shared\ndefaultEnvironment: staging\ntimeoutMs: 600000\nmcpEnabled: true\nmcpPort: 3900\nmcpBindAddress: \"127.0.0.1\"\n```\n\n**Supported keys:** `defaultModel`, `defaultProfile`, `defaultEnvironment`,\n`timeoutMs`, `maxOutputChars`, `cloudPollingIntervalMs`,\n`cloudPollingTimeoutMs`, `mcpEnabled`, `mcpPort`, `mcpBindAddress`.\n\n**Deliberately excluded:**\n\n- `ozPath` — platform-specific, must live in user settings.\n- `mcpBearerToken` — secret, should never be committed.\n\nUnknown keys and keys with the wrong type are logged to the *OzBridge*\noutput channel and ignored, so a typo never breaks the extension.\n\n| Setting | Default | Description |\n| --- | --- | --- |\n| `ozBridge.ozPath` | `oz` | Path to the Oz CLI executable |\n| `ozBridge.defaultModel` | `auto` | Default AI model for agent runs |\n| `ozBridge.defaultProfile` | `Default` | Default Oz agent profile |\n| `ozBridge.defaultEnvironment` | *(empty)* | Default cloud environment name |\n| `ozBridge.timeoutMs` | `300000` | Timeout for local agent runs (5 min) |\n| `ozBridge.cloudPollingIntervalMs` | `5000` | Initial cloud polling interval |\n| `ozBridge.cloudPollingTimeoutMs` | `1800000` | Max cloud polling duration (30 min) |\n| `ozBridge.maxOutputChars` | `15000` | Max characters shown before truncation |\n\n## Architecture\n\nThe extension follows a **layered architecture** with dependency injection\nat the composition root (`src/extension.ts`). Each layer has a single\nresponsibility:\n\n| Layer | Files | Responsibility |\n| --- | --- | --- |\n| **Types** | `types/index.ts` | Interfaces, error classes, config shape, constants |\n| **Parsers** | `parsers/jsonParser.ts`, `parsers/outputFormatter.ts` | JSON parsing (5-level), chat stream rendering |\n| **Services** | `services/ozCliService.ts`, `configManager.ts`, `contextCollector.ts`, `runPoller.ts`, `logger.ts` | CLI execution, settings, IDE context, polling, logging |\n| **Commands** | `commands/router.ts` + 9 command files | Slash-command dispatch and business logic |\n| **Tools** | `tools/*` | VS Code Language Model Tool implementations |\n| **Participant** | `participant/handler.ts`, `followups.ts` | Chat Participant registration and follow-ups |\n\n### Folder structure\n\n```text\nsrc/\n├── types/index.ts          — Contracts: interfaces, errors, config\n├── parsers/\n│   ├── jsonParser.ts       — Robust 5-level JSON parser\n│   └── outputFormatter.ts  — Chat stream formatting & truncation\n├── services/\n│   ├── configManager.ts    — VS Code settings wrapper with caching\n│   ├── contextCollector.ts — IDE context gathering\n│   ├── ozCliService.ts     — Core CLI execution via child_process\n│   ├── runPoller.ts        — Async polling with exponential backoff\n│   └── logger.ts           — Centralised extension logging\n├── commands/\n│   ├── router.ts           — Slash-command dispatch\n│   └── {9 command files}   — One handler per /command\n├── tools/\n│   ├── baseTool.ts         — Shared helpers (textResult, errorResult)\n│   ├── runLocalTool.ts     — oz_run_local\n│   ├── runCloudTool.ts     — oz_run_cloud (with confirmation)\n│   ├── getRunTool.ts       — oz_get_run\n│   ├── listRunsTool.ts     — oz_list_runs\n│   └── index.ts            — registerWarpTools()\n├── participant/\n│   ├── handler.ts          — Chat Participant registration\n│   └── followups.ts        — Contextual follow-up suggestions\n└── extension.ts            — Entry point: compose & register\n```\n\n### Data flow\n\n1. User types `@oz /run implement auth` in Copilot Chat.\n2. VS Code dispatches the request to the `@oz` Chat Participant.\n3. `CommandRouter` maps `/run` to the `createRunCommand` handler.\n4. Handler calls `ContextCollector.gather()` for IDE context.\n5. Handler calls `OzCliService.agentRun()`, which spawns `oz` as a child process.\n6. JSON output is parsed via the 5-level `jsonParser`.\n7. `OutputFormatter` renders the result as markdown in the chat stream.\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Type-check\nnpm run compile\n\n# Build (esbuild)\nnpm run build\n\n# Run tests\nnpm test\n\n# Tests with coverage report\nnpm run test:coverage\n\n# Watch mode (dev)\nnpm run watch\n\n# Clean build artifacts\nnpm run clean\n\n# Package VSIX for distribution\nnpm run package\n```\n\n### Test Suite\n\n- **1,400+ tests** across 100+ files\n- High test-to-code ratio\n- Framework: [Vitest](https://vitest.dev/) v4.0.18\n\n## Contributing\n\nContributions are welcome. Please read\n[CONTRIBUTING.md](CONTRIBUTING.md) before submitting changes.\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\nMake sure all tests pass before submitting:\n\n```bash\nnpm run compile && npm test\n```\n\nSee also the [Code of Conduct](CODE_OF_CONDUCT.md) and the\n[Security Policy](SECURITY.md).\n\n## Troubleshooting\n\n### `oz` command not found\n\nEnsure Warp is installed and the `oz` CLI is available in your `PATH`.\n\n| OS | Typical path |\n| --- | --- |\n| macOS | `/Applications/Warp.app/Contents/MacOS/oz` |\n| Linux | `~/.warp/bin/oz` |\n| Windows | `C:\\Users\\<user>\\AppData\\Local\\Programs\\Warp\\bin\\oz.cmd` |\n\n```bash\n# Verify oz is available\nwhich oz   # macOS / Linux\nwhere oz   # Windows (PowerShell)\n```\n\nIf `oz` is in `PATH` but the extension still reports it as unavailable,\ntype `@oz /config` in the Copilot Chat panel — this triggers extension\nactivation and the first CLI check. You can also set an explicit path in\n**Settings → Extensions → OzBridge → Oz Path**.\n\n### Authentication errors\n\nRun `oz login` in a terminal to re-authenticate, or use the *Login Warp*\nbutton that appears in the error message inside the chat panel.\n\n### Timeout errors\n\nIncrease the timeout in **Settings → Extensions → OzBridge → Timeout (ms)**.\nThe default is 300 000 ms (5 minutes). For large-scale agent runs\nconsider raising it to 600 000 ms. Cloud runs have a separate, longer\ntimeout controlled by `cloudPollingTimeoutMs`.\n\n### Extension not activating\n\nThe extension activates only when the `@oz` participant is invoked in\nCopilot Chat (or when Copilot Agent mode calls one of the LM Tools).\nTo activate it manually:\n\n1. Open the Chat panel (`Ctrl+Shift+I`).\n2. Type `@oz` followed by any command (e.g. `@oz /config`).\n\nMake sure you have **VS Code ≥ 1.96.0** and the **GitHub Copilot Chat**\nextension installed and signed in.\n\n## FAQ\n\n**Q: Does OzBridge work with Cursor, Claude Code and Codex?**\nA: Yes. All three are MCP clients — point them at the bridge endpoint and they\nget the same six Oz tools Copilot sees. Copy-paste configs are in\n[Connect your MCP client](#connect-your-mcp-client).\n\n**Q: Do I need VS Code at all?**\nA: No. The standalone [`@sena-labs/oz-mcp-server`](packages/oz-mcp-server) runs\nvia `npx` with no editor involved; VS Code is only required for the `@oz` chat\nparticipant and the sidebar.\n\n**Q: What is the difference between a local run and a cloud run?**\nA: A local run spawns the `oz` CLI in your workspace — no Warp credits, full\naccess to your files. A cloud run executes on Warp's infrastructure, consumes\ncredits, and runs detached from your machine. Both are reachable from every\nclient.\n\n**Q: Does this extension require a Warp subscription?**\nA: A free Warp account is sufficient for local agent runs. Cloud runs may\nrequire a paid plan depending on usage. Check your account at\n[app.warp.dev](https://app.warp.dev).\n\n**Q: Can I use a custom model?**\nA: Yes — set `ozBridge.defaultModel` in VS Code settings or pass it\ninline with `/run --model gpt-4o`. To see all available models, use\n`/models`.\n\n**Q: Which operating systems are supported?**\nA: macOS, Linux and Windows are all natively supported. The extension\nworks on any platform where VS Code and the Oz CLI can run. On Windows\nthe extension automatically handles `.cmd` wrappers.\n\n**Q: How do I report a bug?**\nA: Open an issue using the\n[bug report template](.github/ISSUE_TEMPLATE/bug_report.md). Include your\nOS, VS Code version, extension version and steps to reproduce.\n\n**Q: Can I use this extension with GitHub Copilot Chat?**\nA: Yes — this extension is a VS Code Chat Participant. It appears as\n`@oz` in the Copilot Chat panel. You need GitHub Copilot Chat installed\nand active.\n\n**Q: How do I update the Oz CLI?**\nA: The Oz CLI ships with Warp. Updating Warp to the latest version\nautomatically updates the Oz CLI.\n\n- macOS: `brew upgrade warp`\n- Windows/Linux: download the latest installer from [warp.dev](https://www.warp.dev/).\n\n**Q: What happens if the agent run times out?**\nA: The extension shows a timeout error with the configured limit in\nseconds. You can increase the timeout via `ozBridge.timeoutMs` in\nsettings. Cloud runs have a separate, longer timeout controlled by\n`cloudPollingTimeoutMs`.\n\n**Q: Can I run multiple agents in parallel?**\nA: Yes — each `/run` or `/cloud` command spawns an independent process.\nMultiple chat messages can trigger concurrent agent executions.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details.\n\n## Disclaimer\n\nOzBridge is an independent project developed by Ivan Sena under the Sena Labs name. It is\n**not affiliated with, endorsed by, sponsored by, or officially associated with** Warp, Inc.,\nMicrosoft, GitHub, or Visual Studio Code.\n\n**Warp™** and **Oz™** are trademarks of Warp, Inc.; other names may be trademarks of their\nrespective owners. They are used here **nominatively** only to describe interoperability.\nOzBridge uses solely Warp's **documented public interfaces** (the `oz` CLI, the Model Context\nProtocol, and `WARP_OUTPUT_FORMAT`); it does not modify, reverse-engineer, or compete with Warp.\n\nThis extension is provided \"as is\", without warranty of any kind. Use it at your own risk. See [DISCLAIMER.md](./DISCLAIMER.md) for details.\n",
  "bytes": 26896,
  "sha": "4265cd4d33e778d9e6e45a57a63e52b110325b5c1e049eedd9314e466e6ba3c1",
  "repo_slug": "sena-labs/ozbridge",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_sena_labs_warp_ozbridge_867103f8/readme"
}