gitbutlerapp/gitbutler Β· error
Azure is unsupported at the minute. Sorry π.
Error message
Azure is unsupported at the minute. Sorry π.
What it means
GitButler's forge layer recognizes GitHub, GitLab, Bitbucket and Azure DevOps remotes, but review (PR) management is only implemented for the first three. When the project's target branch resolves to an Azure remote, the review flow hits the explicit `ForgeName::Azure => bail!` arm in the forge display-name match and aborts before contacting any API.
Source
Thrown at crates/but/src/command/legacy/forge/review.rs:403
but_forge_storage::Controller::from_path(but_path::app_data_dir()?),
forge_repo_info,
ctx.legacy_project.preferred_forge_user.clone(),
)
};
let forge_repo_info = forge_repo_info.ok_or_else(|| {
anyhow::anyhow!(
"Unable to determine the forge for this project. Is target branch associated with a supported forge?"
)
})?;
let account_validity =
but_forge::check_forge_account_is_valid(preferred_forge_user, &forge_repo_info, &storage)
.await?;
let forge_display_name = match forge_repo_info.forge {
but_forge::ForgeName::Azure => {
anyhow::bail!("Azure is unsupported at the minute. Sorry π.");
}
but_forge::ForgeName::GitHub => "GitHub",
but_forge::ForgeName::GitLab => "GitLab",
but_forge::ForgeName::Bitbucket => "Bitbucket",
};
match account_validity {
but_forge::ForgeAccountValidity::Invalid => Err(anyhow::anyhow!(
"Known account is not correctly authenticated.\nRun '{}' to authenticate with {}.",
"but config forge auth",
forge_display_name
)),
but_forge::ForgeAccountValidity::NoCredentials => Err(anyhow::anyhow!(
"No authenticated forge users found.\nRun '{}' to authenticate with {}.",
"but config forge auth",
forge_display_name
)),
but_forge::ForgeAccountValidity::Valid => {View on GitHub (pinned to caf1f223d3)
Solutions
- Use a GitHub, GitLab, or Bitbucket-hosted remote for review workflows: point the target branch's remote at a supported forge.
- Manage Azure DevOps PRs directly in the Azure UI/CLI until support is added.
- Verify what was detected: check the target branch remote with `git remote -v`.
Defensive patterns
Strategy: validation
Validate before calling
# Guard review commands on the forge host case "$(git remote get-url origin)" in *dev.azure.com*) echo 'Azure DevOps: review commands unsupported'; exit 2 ;; esac
Type guard
fn forge_supports_reviews(forge: but_forge::ForgeName) -> bool {
!matches!(forge, but_forge::ForgeName::Azure)
} Prevention
- Check `git remote -v` for dev.azure.com before running review commands.
- Prefer GitHub/GitLab/Bitbucket remotes for stacks that need PR management.
- Surface a clear 'unsupported forge' message in wrappers instead of letting the bail surprise users.
When it happens
Trigger: Any forge review command (creating/updating PRs for a stack) in a project whose target branch remote is on dev.azure.com; `but_forge` identifies the repo as Azure and the review flow reaches the display-name lookup in crates/but/src/command/legacy/forge/review.rs:403.
Common situations: Enterprise projects hosted on Azure DevOps; teams trying GitButler's stack/PR workflow against an Azure remote; repos migrated to Azure while the GitButler project config still points at it.
Related errors
- No branch found for ID: {branch_id}
- Aborting due to empty PR title
- Listing ci checks for forge {forge:?} is not implemented yet
- Fetching repo info for forge {:?} is not implemented yet.
- Failed to communicate with LM Studio server: ${error instanc
AI-assisted analysis of gitbutlerapp/gitbutler@caf1f223d3 (2026-08-20).
Data as JSON: /api/errors/2f134459250d04c1.
Report an issue: GitHub.