Azure DevOps connector setup
Operator·2 minutes to read
This page is the setup half — registering the Microsoft Entra ID app Azure DevOps sign-in needs and getting its client id and secret into this deployment. Authorising a connection afterwards is the Authenticate control on the plugin sheet, which is what actually sends you to Microsoft.
The connector is read-only: organisations, repositories, pull requests and work items. It signs in
with Microsoft Entra ID, because Azure DevOps' own OAuth takes no new apps and is removed in 2026.
Work or school accounts in an Entra-backed organisation only; personal Microsoft accounts are not
supported for the Azure DevOps resource. The vendor facts behind this page are in
docs/research/connectors/azure-devops.md.
1. Register the app in Microsoft Entra ID
-
In the Microsoft Entra admin center, open App registrations and register a new app. This is your own app, not Botseon's. For members from several tenants, pick accounts in any organisational directory.
-
Add a Web redirect URI: the redirect URL from
docs/connectors/README.md— with the quickstart's defaultBOTSEON_PUBLIC_URL, that is:http://127.0.0.1:3000/api/oauth/azure-devops/callback -
Under Certificates & secrets, add a client secret and copy it now, with the app's Application (client) ID.
-
Under API permissions, add Azure DevOps → Delegated →
vso.code,vso.workandvso.profile. If your tenant restricts user consent, an administrator grants it here.
2. Scopes
The sign-in asks for Azure DevOps' three read scopes and offline_access (for a refresh token):
499b84ac-1321-427f-aa17-267ca6975798/vso.code, …/vso.work, …/vso.profile. The account is
recorded as holding azure-devops:all; the connector has no write tool. Nothing needs switching on
in Azure DevOps itself — its "Third-party application access via OAuth" policy governs only its own
retired OAuth apps.
3. Enter the app
One command, with the client secret on standard input (see
docs/connectors/README.md):
printf %s "$CLIENT_SECRET" | botseon oauth-app set \
--org <organisation id> --slug azure-devops \
--client-id <the application (client) ID from step 1> \
--auth-url https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize \
--token-url https://login.microsoftonline.com/organizations/oauth2/v2.0/token \
--configured-by <your user id>
It stores the secret encrypted and prints the redirect URL from step 1 back, so you can check the
two match. botseon oauth-app show --org <organisation id> --slug azure-devops says whether an
app is configured and under which client id; nothing prints the secret back.
Never put either value in a bot's description, a memory, or anywhere else a model reads as ordinary text.
Last verified against build 29622b0.