> ## Documentation Index
> Fetch the complete documentation index at: https://docs.decimal.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure Repos

> Connect Azure DevOps repositories and choose which ones Decimal indexes for code search.

## What it does

Once connected, Decimal:

* **Indexes the repositories you select** for code search
* **Searches relevant files** when investigating support tickets
* **References specific code** in its investigation responses

## Before you connect

You'll need an organization admin account in Decimal and read access to the Azure DevOps repositories you want to connect.

This integration supports **Azure DevOps Services Git repositories**, with one Azure DevOps organization per Decimal organization. Self-hosted Azure DevOps Server is not supported. Use an organization URL such as `https://dev.azure.com/your-organization`, not a project or repository URL.

Choose a **service principal with a client secret** or an organization-scoped **personal access token (PAT)**. The service principal form does not accept certificates, managed identities, or federated credentials; confirm that your chosen method meets your organization's policy.

## Setting up Azure

### Service principal

1. **Register an app** in the tenant connected to your Azure DevOps organization, following Microsoft's [app registration guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app). Copy the **Directory (tenant) ID** and **Application (client) ID**.
2. **Add a client secret** under **Certificates & secrets → Client secrets**, following Microsoft's [credential guide](https://learn.microsoft.com/en-us/entra/identity-platform/how-to-add-credentials). Copy the secret **value**, not its ID; the value is shown only once.
3. **Grant repository access**: add the service principal in Azure DevOps under **Organization settings → Users**, with **Basic** access and **Read** permission on the intended repositories. Microsoft's [service principal guide](https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/service-principal-managed-identity) covers organization membership and permissions. Registering the app in Entra alone does not grant Azure DevOps access.

### Personal access token

In Azure DevOps, open **User settings → Personal access tokens → New Token**. Select the specific organization, set an expiry date, and grant **Code (Read)**. The token's owner must already have access to the intended repositories. Copy the token securely; Microsoft's [PAT guide](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate) covers creation and expiry management.

## Connecting Azure Repos

1. **Open Integrations**: go to **Settings → Integrations** and click **Azure Repos** under **Developer tools**.
2. **Enter the organization**: in **Connection**, enter your Azure DevOps organization URL.
3. **Enter credentials**: choose the **Authentication method**. For **Service principal**, enter the tenant ID, client ID, and client secret value from the setup above. For **Personal access token**, enter the token.
4. **Connect**: click **Connect**. Decimal verifies that the credentials can list repositories before saving. Check that **Status** reads **Connected**, and that **Organization** and **Auth** match your intended connection.

## Selecting repositories

1. **Choose repositories**: in **Repositories**, search by project or repository name and check the repositories you want indexed. Clear the search to review the full selection; filtering does not remove hidden selections.
2. **Save the selection**: click **Sync selected (N)**. Checking a box alone does not save it. Unchecked repositories stop being indexed; saving with no repositories selected stops indexing all Azure Repos repositories.
3. **Verify the selection**: after saving, click **Refresh** and confirm that the intended repositories remain checked.

The **Indexed** count reflects active selections, not completed indexing jobs. Indexing runs in the background, and this page does not show per-repository progress.

**Refresh** discards unsaved checkbox changes. Deselecting a repository stops indexing it but does not purge previously indexed content.

## Updating credentials

Record the PAT or client secret's expiry date and replace it before it expires. Decimal refreshes service principal access tokens, but does not renew PATs or client secrets.

1. **Prepare a replacement** with the same repository access through your Azure administrator's normal process.
2. **Update the connection**: open **Azure Repos → Update credentials**, keep the same organization URL, and enter the replacement credential. For a service principal, enter both IDs and the new secret value. Click **Save**.
3. **Verify access**: confirm that **Status** reads **Connected**, then refresh the repository list and check the saved selection.

Changing the organization URL connects a different Azure DevOps organization and deactivates selections from the old one. Select repositories again if you intended to switch organizations.

## Troubleshooting

| What you see | What to check |
| - | - |
| **Connect** or **Save** is unavailable | Complete the organization URL and all fields for the selected authentication method. |
| An invalid organization URL | Use the HTTPS organization root URL, without project paths, query parameters, or fragments. |
| Credentials cannot be verified, or repository access stops working | Check credential expiry and repository permissions. For a PAT, check **Code (Read)** and the owner's access. For a service principal, check the tenant/client IDs, secret value, Azure DevOps membership, **Basic** access, and repository **Read** permission. |
| **No matches** or **No repositories found** | Clear the search, confirm the connected organization, and check the credential's access. Disabled repositories are omitted. Refresh after access is corrected. |
| **Repository access changed. Refresh and try again.** | Refresh the list, review the available repositories, and save the updated selection. |
| Selected code is missing from investigations | Confirm the saved selection and credential access, and allow indexing to run. Empty repositories have no code to index; file type and size filters also limit what is indexed. |

If the problem continues, [email support](mailto:support@getdecimal.ai) with the error, time, and affected project/repository if your policy permits sharing it. Leave PATs and client secrets out of the message.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.