A full-featured Azure DevOps integration for Visual Studio Code, bringing the power of ADO directly into your editor. Manage work items, pull requests, builds, and team collaboration—all without leaving VS Code.
See CHANGELOG.md for the full release history.
- Browse & Filter — View work items assigned to you, created by you, or across your entire portfolio
- Multi-Org Aggregation — Work items aggregate seamlessly across selected organizations and projects, grouped by project and state
- Regex Filtering & Sorting — Filter work items by regex pattern (ID, title) and sort by name or creation date; buttons in the Work Items view header
- Rich Details Panel — One-click to open full work item details in a dedicated webview panel
- Edit title, description, state, priority, assignee, area path, iteration, and tags
- View and participate in discussion comments
- See work item history and linked items
- Open in browser anytime for advanced ADO features
- ADO-Style Icons — Custom icons for bugs, tasks, epics, features, stories, PBIs, and issues
- State Changes — Change work item state directly from the sidebar
- From Selection — Highlight text in the editor and run
ADOExt: Create Work Item from Selectionto create a new work item with your selected text as the title - From TODO Comments — VS Code code action (💡) appears on TODO comments; click to create a work item directly from the comment
- File Context — Work items automatically include the source file path and context lines for quick reference
- Work Item References — Type
#orAB#in markdown, plaintext, or git commits to see IntelliSense completions for recent work items- Shows work item ID, title, type, and state
- Filter by typing ID digits or title keywords
- Works with both
#123andAB#123reference formats
- Team Mentions — Type
@to autocomplete team member names from your project- Quickly mention colleagues in descriptions, comments, and commit messages
- Filters by display name and email prefix
- Work Item Hovers — Hover over
AB#123or#123references in any open file to see a rich detail card- Shows title, type, state, assignee, and project scope
- Quick actions: Open in Browser, View Details panel
- Pull Request Hovers — Hover over
PR #123,PR!123, or!123to see PR details- Shows title, status, repository, and author
- Quick link to open in browser
- Smart Scope Resolution — Hovers work across multi-project setups; when ambiguous, shows the matched scope
- Browse PRs — View active pull requests (yours, created, assigned to you, all) aggregated across organizations/projects
- Regex Filtering & Sorting — Filter PRs by regex pattern (ID, title) and sort by title or creation date; buttons in the Pull Requests view header
- Inline Review — Expand PRs in the tree to see all comment threads; reply, resolve, or reopen directly from the sidebar
- Rich PR Details Panel — One-click to see full PR information, discussions, and reviewer status
- Familiar Review UX — The pull request review flow is inspired by the GitHub Pull Requests and Issues extension for VS Code, adapted for Azure DevOps workflows
- Native Diff Editor — Review changes in VS Code's native multi-diff editor (same UX as GitHub PR extension)
- All changed files visible at once
- Inline PR comments in the gutter
- Add new line comments with the
+affordance
- Checked-Out Branch — After running "Checkout Pull Request Branch", existing PR threads light up in your regular editor
- Smart Notifications — Toast notifications for new PR comments; configure poll frequency and notification types
- PR Queries & Buckets — Organize PRs by review state (Waiting for My Review, Created by Me, All Open) or save custom queries
- Hierarchical Backlog — View parent/child work item relationships in a collapsible tree
- Sprint Planning — Browse work grouped by sprint/iteration with drag-and-drop reordering
- Regex Filtering & Sorting — Filter and sort items in Backlog and Sprint views by regex pattern or name/date (controls in the editor view toolbar)
- Assigned-to-Me Planning Filter — Toggle Backlog/Sprint/Board trees between all items and items assigned to you
- Board View — See work organized by state columns (To Do, In Progress, Done, etc.)
- Editor Views — Open Backlog and Board editor views for wider planning layouts
- State Changes — Update work item state from planning views; sidebar automatically refreshes
- Linked Details — Open any work item from planning views in the shared details panel
- Built-in Auth — Uses VS Code's Microsoft authentication (no manual token management)
- Multiple Accounts — Sign in with multiple Microsoft accounts and switch seamlessly
- Organization Picker — Select one or multiple organizations or all orgs in your account
- Project Picker — Choose projects per organization or select all projects
- Smart Aggregation — All views (work items, PRs) automatically aggregate across your selection
- Build Summaries — Lightweight build status cards in PR and work item detail panels
- Pipelines View — Browse recent Azure Pipelines runs across selected scopes; filter/group runs, inspect timeline details, open step logs from the tree or details timeline in VS Code, and open artifacts
- MCP Server — Foundry integration for AI-powered workflows and automations
- Azure Boards Integration — Full WIQL query support for advanced filtering and bulk operations
From VS Code Marketplace:
- Open VS Code
- Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
- Search for "ADOExt"
- Click Install
From Source:
git clone https://github.com/CompN3rd/ADOExt
cd ADOExt
npm install
npm run compile
code --install-extension ./adoext-<version>.vsix- Open the Command Palette (Ctrl+Shift+P / Cmd+Shift+P)
- Run
ADOExt: Sign In - Authenticate with your Microsoft account
- Run
ADOExt: Select Organization - Choose your Azure DevOps organization(s)
- Run
ADOExt: Select Project - Choose project(s) to work with
- Work Items — Browse assigned, created, and all work items
- Pull Requests — View PRs organized by bucket (Waiting for Review, Created by Me, All Open)
- Backlog — Hierarchical view of all work
- Sprints — Current and future sprint planning
- Boards — Kanban-style board view
- Pipelines — Recent CI/CD runs across your selected scopes
// 1. Highlight problematic code:
const buggyFunction = () => {
return undefined; // Fix null handling here
};
// 2. Right-click → "Create Azure DevOps Work Item from Selection"
// 3. Type title and choose work item type
// 4. Work item created with file:line context embedded# Line 42 in main.py
# TODO: Refactor database queries for performance
# 1. Click the 💡 lightbulb that appears
# 2. Select "Create Azure DevOps Work Item from TODO"
# 3. Work item created from the TODO text# PR Description
This fixes AB#4521 and relates to #4522
# As you type "AB#" or "#", VS Code shows matching work items:
# - AB#4521 | Bug · Login timeout · Active · Jane Smith
# - AB#4520 | Feature · Dark mode · Planned · Bob Wilson# In any editor, hover over a work item or PR reference:
AB#4521 ← Hover here to see rich card:
│ Bug · Fix login timeout · Active
│ Assigned To: Jane Smith
│ Scope: contoso/backlog
│ [Open in Browser] [View Details]
PR #123 ← Hover here to see:
│ Pull Request #123
│ Title: Add retry logic
│ Status: Active
│ Repository: backend
│ Author: Bob Wilson
│ [Open in Browser]
1. Open Pull Requests sidebar
2. Expand a PR to see comment threads
3. Right-click a thread → Reply, Resolve, or Reopen
4. Or click the PR to open full details panel
5. Or run "Checkout Pull Request Branch" to pull the code
→ Existing PR threads now light up in your editor
Open VS Code Settings (Ctrl+, / Cmd+,) and search for adoext to customize:
| Setting | Description | Default |
|---|---|---|
adoext.notifyOnNewPullRequestComments |
Show toast when PRs get new comments | true |
adoext.pullRequestCommentPollIntervalSeconds |
How often to check for new PR comments | 60 |
adoext.workItemQueries |
Custom saved work item query filters | (defaults) |
adoext.pullRequestQueries |
Custom saved PR query filters | (defaults) |
adoext.projectsByOrganization |
Multi-org project selection | {} |
| Command | Shortcut | Purpose |
|---|---|---|
ADOExt: Sign In |
— | Authenticate with Microsoft |
ADOExt: Select Organization |
— | Choose organization(s) |
ADOExt: Select Project |
— | Choose project(s) |
ADOExt: Create Work Item |
— | Create a new work item interactively |
ADOExt: Create Work Item from Selection |
— | Create work item from highlighted text |
ADOExt: Create Work Item from TODO |
— | Scan active file for TODO comments |
ADOExt: Open Saved Query |
— | Browse and open saved work item queries |
ADOExt: Refresh Work Items |
— | Manually refresh work items tree |
ADOExt: Refresh Pull Requests |
— | Manually refresh PR tree |
ADOExt: Checkout Pull Request Branch |
— | Check out a PR branch locally |
- VS Code 1.101.0 or later
- Git (for PR branch checkout)
- Azure DevOps Account with at least read access to your organization
- Microsoft Authentication in VS Code (built-in; uses existing sign-in)
We welcome contributions! Please feel free to open issues or pull requests on GitHub.
git clone https://github.com/CompN3rd/ADOExt
cd ADOExt
npm install
npm run compile # Build extension TypeScript and webview bundles
npm run watch # Watch extension TypeScript
npm run watch:webviews # Watch bundled webview assets
code . # Open in VS Code for testingThis extension is open source and available under the MIT License.
Found a bug or have a feature request? Open an issue on GitHub.
Happy coding! 🎉
- Open the Azure DevOps activity bar icon (sidebar)
- Click Sign In (or the organization icon) to authenticate with your Microsoft account
- Select your Azure DevOps organization from the auto-populated list
- Select your project from the auto-populated list
- Work items and pull requests will load automatically
| Setting | Default | Description |
|---|---|---|
adoext.organization |
(empty) | ADO organization name |
adoext.project |
(empty) | ADO project name |
adoext.organizations |
[] |
Organizations selected for aggregated views |
adoext.projectsByOrganization |
{} |
Project selections by organization; ["*"] means all projects |
adoext.workItemQueries |
[] |
Saved work item query definitions. When empty, ADOExt falls back to adoext.workItemQuery. |
adoext.activeWorkItemQueryId |
"" |
Active saved work item query ID. Falls back to the first saved query or the legacy query setting. |
adoext.workItemQuery |
assigned |
Legacy work item filter used when no saved work item queries are defined. |
adoext.workItemHideStates |
[] |
Work item states to hide from the Work Items tree view (e.g. ["Done", "Removed"]). Case-insensitive. |
adoext.pullRequestQueries |
[] |
Saved pull request bucket definitions. These are appended below built-in buckets in the Pull Requests view. |
adoext.activePullRequestQueryId |
"" |
Legacy pull request query selector state kept for backward compatibility with older versions. |
adoext.pullRequestFilter |
mine |
Legacy pull request filter used as compatibility fallback when older settings are migrated. |
adoext.useRemoteWorkItemIcons |
true |
Prefer Azure DevOps work item type icons (including custom process icons). Disable to force bundled fallback icons. |
adoext.planningAssignedFilter |
all |
Assignee filter for Backlog/Sprint/Board views (all or mine). |
Use ADOExt: Select Work Item Query to switch the active work item preset. In the Pull Requests view, built-in review buckets are always shown (Waiting for My Review, Created by Me, All Open), and ADOExt: Save Pull Request Query Preset adds custom buckets to that list. Use the inline refresh action on a bucket to reload only that bucket.
Use the Toggle Hide Done Work Items button in the Work Items view title bar (or run ADOExt: Toggle Hide Done Work Items from the Command Palette) to quickly add or remove Done from adoext.workItemHideStates. For finer control, edit the adoext.workItemHideStates setting directly to exclude any combination of states (e.g. ["Done", "Removed"]).
npm install
npm run compile
# or for watch mode:
npm run watch
npm run watch:webviewsPress F5 in VS Code to launch the Extension Development Host.
ADOExt integrates with the official Microsoft Azure DevOps MCP server (@azure-devops/mcp), providing a single-install experience with shared configuration. Updates to the official server flow through automatically.
Use the ADOExt: Copy MCP Server Configuration command to get a ready-to-paste configuration for .vscode/mcp.json. The command offers multiple authentication options:
Interactive (browser-based, default — no PAT needed):
{
"servers": {
"azure-devops": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@azure-devops/mcp", "your-org"]
}
}
}Windows note: If not using VS Code's native MCP provider (which handles this automatically), replace
"npx"with"npx.cmd"in the command field.
Bearer token via environment variable (e.g. from ADOExt sign-in session):
{
"servers": {
"azure-devops": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@azure-devops/mcp", "your-org", "--authentication", "envvar"],
"env": {
"ADO_MCP_AUTH_TOKEN": "${ADO_MCP_AUTH_TOKEN}"
}
}
}
}PAT via environment variable:
{
"servers": {
"azure-devops": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@azure-devops/mcp", "your-org", "--authentication", "pat"],
"env": {
"PERSONAL_ACCESS_TOKEN": "${PERSONAL_ACCESS_TOKEN}"
}
}
}
}The official Azure DevOps MCP server provides tools across multiple domains:
- Core — Projects, teams, iterations
- Work Items — Query, create, update work items
- Work — Boards, sprints, backlogs
- Repositories — Repos, pull requests, branches
- Pipelines — Builds, releases
- Wiki — Pages, content
- Search — Code and work item search
- Test Plans — Test suites and results
- Advanced Security — Alerts and scanning
Use the --domains (-d) flag to load only specific domains. See the official toolset docs for the full list.
For development/testing purposes, the repository includes a wrapper script that bridges environment variables to the official server CLI:
# Interactive browser-based auth (default, no env vars needed)
npx -y @azure-devops/mcp your-org
# Development wrapper (run from repo after `npm run compile`)
export ADO_ORGANIZATION="your-org"
node out/mcp/main.js # interactive (browser)
export ADO_ACCESS_TOKEN="bearer-token-here" # maps to ADO_MCP_AUTH_TOKEN
node out/mcp/main.js # uses --authentication envvar
export AZURE_DEVOPS_PAT="your-pat-here" # maps to PERSONAL_ACCESS_TOKEN
node out/mcp/main.js # uses --authentication patNote: The
node out/mcp/main.jspath is only valid when running from the source repository after compilation. End users should use thenpx @azure-devops/mcpconfigurations above.
The MCP server supports multiple authentication methods (checked in order by the wrapper):
- Interactive (browser) — Default. Opens a browser for Microsoft OAuth sign-in. No environment variables needed.
- Bearer token (
ADO_MCP_AUTH_TOKEN) — Pass a bearer token via the--authentication envvarmethod. The wrapper mapsADO_ACCESS_TOKEN→ADO_MCP_AUTH_TOKEN. - PAT (
PERSONAL_ACCESS_TOKEN) — Personal access token for automation scenarios. The wrapper mapsAZURE_DEVOPS_PAT→PERSONAL_ACCESS_TOKEN.
The ADOExt: Copy MCP Server Configuration command generates env-var-based configurations that reference ${ADO_MCP_AUTH_TOKEN} or ${PERSONAL_ACCESS_TOKEN} — tokens are never embedded directly in the config file.