What’s synced
- Pull requests and their metadata
- Commits and code changes
- Code reviews and comments (threads and votes)
- Team members and organization structure
- Repository and project information
- Boards projects, teams, iterations, work items, status and estimate changes, and pull-request links
- CI/CD build pipelines and classic Release Management deployments for Services and Server (for DORA deploy metrics).
Connecting Azure DevOps Server 2022
- Use the complete public HTTPS collection URL, including its collection path. Publicly routable destinations require no operator allowlist. For private-network destinations, ask your Weave operator to approve the exact URL in
AZUREDEVOPS_SERVER_ALLOWED_COLLECTIONSon every runtime. - Configure
EXTERNAL_KEY_ENCRYPTION_KEY, the established Tink AEAD JSON keyset, on the backend, sync workers and every scheduled/on-demand clone runtime. The same key must be available to all consumers. Server PAT storage fails closed without it, including self-hosted deployments. Back up the key securely; losing it requires reconnecting with new PATs. - Verify those runtimes can resolve and reach the Server directly. Install corporate CA roots in both the Go/runtime and Git trust stores. TLS verification cannot be disabled, redirects are rejected, and HTTP proxies are not used for Server access. Explicitly approved private addresses are allowed; loopback, link-local and metadata addresses are always blocked. Git must support
http.curloptResolvefor DNS pinning. - Create a PAT for a service account with Code (read), Project and Team (read) and Identity (read), plus Reader access to the selected Git repositories. Add Work Items (read) to enable Boards sync. Identity (read) lets Weave read the collection-local Identities API (
{collection}/_apis/identities) so PR authors, reviewers, commenters and commit contributors are mapped to Weave members by their directory email; connect and PAT rotation verify it after repository access, and a PAT without it fails validation. The PAT owner is only a credential: it is never treated as a contributor or an admin. Windows/NTLM/Kerberos and TFVC are not supported. Microsoft Entra/OAuth integration authentication is Services-only. - In Data → Azure DevOps → Connect, choose Server, enter the collection URL and PAT, and select repositories after validation succeeds. Failed validation saves nothing.
Private destinations are supported only when every Weave runtime already has network access, such as a self-hosted Weave deployment on the same private network or VPN. Weave Cloud cannot connect directly to a private-only Azure DevOps Server deployment.
Prerequisites
Before connecting Azure DevOps, you’ll need:- An Azure DevOps organization
- Access to register applications in Microsoft Entra ID
- Permissions to configure firewall rules (if behind corporate firewall)
- HTTPS (port 443) access to required domains
Connecting Azure DevOps Services (cloud)
1
Register OAuth application
Create a Microsoft Entra ID OAuth application (see detailed setup below)
2
Start connection
Go to Data and click Connect on Azure DevOps
3
Authorize Weave
Sign in to Microsoft and authorize the Weave application
4
Select organizations
If you have access to multiple Azure DevOps organizations, choose which ones
to connect
5
Admin install
For organization managers, click Install to grant repository sync
permissions
6
Select repositories
Choose which repositories to sync from your Azure DevOps projects
7
Wait for sync
Initial sync may take several minutes to hours depending on repository size
and history
Microsoft Entra ID OAuth setup
This guide walks through creating a Microsoft Entra ID (formerly Azure Active Directory) OAuth application for the Azure DevOps integration.Step 1: Navigate to Microsoft Entra admin center
- Go to the Microsoft Entra admin center
- Sign in with an account that has permission to register applications
- Navigate to Identity → Applications → App registrations
Step 2: Register new application
Click New registration and configure: Application name:- For Azure DevOps Services (cloud): Select “Accounts in any organizational directory (Multitenant)”
- Platform: Web
- URI:
https://app.workweave.ai/api/azuredevops/oauth/callback
app.workweave.ai with your Weave instance hostname if different.
Click Register.
Step 3: Add additional redirect URI
- Go to Authentication in the left sidebar
- Under Web platform, click Add URI
- Add:
https://app.workweave.ai/api/azuredevops/install/callback - Click Save
Step 4: Create client secret
1
Navigate to secrets
Go to Certificates & secrets in the left sidebar
2
Create new secret
Under Client secrets, click New client secret - Description:
Weave Integration Secret - Expiration: 24 months (recommended)3
Copy secret value
Click Add and immediately copy the Value — it won’t be shown again
Store the secret securely (you’ll need it later)
Step 5: Configure API permissions
1
Add permission
Go to API permissions → Add a permission → Azure DevOps
2
Select delegated permissions
Select Delegated permissions and check user_impersonation
3
Grant admin consent (optional)
Click Grant admin consent for [Your Organization] to pre-approve for all
users
offline_access permission is automatically included for refresh token support.
Step 6: Copy application details
You’ll need these values for Weave configuration:- Application (client) ID — Found on the Overview page
- Client secret — Copied in Step 4
- Directory (tenant) ID — Found on the Overview page (for single-tenant apps)
common as the tenant ID.
Configure Weave backend
For Azure DevOps Services (cloud)
Weave administrators need to set these environment variables on the backend:Permissions required
Weave requests the following Microsoft Entra ID permissions:- user_impersonation — Full access to Azure DevOps on behalf of the authenticated user
- offline_access — Refresh tokens for automatic token renewal
OAuth scopes explained
Theuser_impersonation scope grants full access to Azure DevOps APIs on behalf of the authenticated user. This includes:
Code & repositories:
- Read and write source code
- Manage repositories and branches
- Access commit history
- Read and write pull requests
- Access reviews and comments
- Manage PR status
- Read and write work items
- Access work item history
- Read project and team information
- Access organization structure
Single-tenant vs multi-tenant
Single-tenant (a Services OAuth application restricted to one Entra tenant):- App registered to one specific Entra ID tenant
- Only users from that tenant can authenticate
- Most common for enterprise internal applications
- App can authenticate users from any Entra ID tenant
- Required for ISV applications serving multiple organizations
- Select “Accounts in any organizational directory” during registration
Multiple organizations
You can connect multiple Azure DevOps organizations from the same or different Microsoft accounts. During the OAuth flow, select all organizations you want to connect.Sync frequency
Services with webhooks: Changes typically appear within a few minutes. Azure DevOps webhooks trigger syncs for PR and push events in real-time. Polling (Services and Server): Existing scheduled sync queues poll connected repositories. Freshness depends on queue load, history size and throttling; initial history may take substantially longer than incremental sync. Manual sync: Organization admins can trigger manual syncs from the Data pageSecurity considerations
Token storage:- Server PATs use application-level AEAD encryption. Do not assume the separate Services OAuth token storage path uses the same field encryption.
- Access tokens expire after ~1 hour
- Refresh tokens expire after ~90 days of inactivity
- Weave automatically refreshes tokens before expiration
- No manual re-authentication required
- You are notified if refresh fails (typically due to revoked access)
- Go to Microsoft Entra admin center
- Navigate to Enterprise applications
- Find “Weave Azure DevOps Integration”
- Click Delete or disable the application
Troubleshooting
Your organization requires admin approval
When someone signs in with Azure DevOps, Microsoft asks them to let Weave read their Azure DevOps data. Many organizations only let Microsoft Entra admins approve new apps. In that case Microsoft shows Need admin approval (or the person clicks Cancel), and Weave shows an error asking them to contact their admin. A Microsoft Entra admin (Cloud Application Administrator, Application Administrator or Global Administrator) can approve Weave for the whole organization:- Sign in to Weave with Azure DevOps yourself and, on the Microsoft permissions screen, check Consent on behalf of your organization before you click Accept.
- Or, if someone has already tried to sign in, go to the Microsoft Entra admin center → Identity → Applications → Enterprise applications and open the Weave app. It’s named Weave for Azure DevOps Services sign-in, or the name you chose (such as Weave Azure DevOps Integration) if you registered your own OAuth application above. Then go to Security → Permissions and click Grant admin consent for [your organization].
- If your organization uses the admin consent workflow, approve the pending request under Enterprise applications → Admin consent requests.
OAuth setup failing
OAuth setup failing
If OAuth application setup fails:
- Verify you have permission to register applications in Entra ID
- Check that both redirect URIs are configured correctly
- Ensure the client secret hasn’t expired
- Confirm user_impersonation permission is granted
Connection not working
Connection not working
If connection to Azure DevOps fails:
- Verify environment variables are set correctly in Weave backend
- Check that AZUREDEVOPS_CLIENT_ID and CLIENT_SECRET match Entra ID app
- Ensure user has access to Azure DevOps organizations
- Try revoking and re-granting permissions
Sync issues
Sync issues
If data isn’t syncing:
- Check that repositories are not archived
- Verify user permissions haven’t changed
- Ensure webhooks are configured (if using)
- Trigger manual sync from Data page
