jdx/mise · error
No provider found for git URL: {}
Error message
No provider found for git URL: {} What it means
When mise resolves a remote task file that is a git URL, it needs a provider (a `TaskFileProviders` entry or a parsed `RemoteSource`) to turn the URL into a local cached artifact. `resolve_git_url_to_path` first tries the configured providers with caching; if none matches, and with `remote_no_cache` it also fails `RemoteSource::parse_git`, it bails with this message — meaning the git URL uses a host/format mise has no handler for.
Source
Thrown at src/config/mod.rs:5079
let Ok(relative_path) = path.strip_prefix(root) else {
return false;
};
let relative_path = relative_path.to_string_lossy().replace('\\', "/");
let file_name = path
.file_name()
.map(|file_name| file_name.to_string_lossy().replace('\\', "/"));
TOML_CONFIG_MATCHERS.iter().any(|matcher| {
matcher.is_match(&relative_path) || file_name.as_ref().is_some_and(|f| matcher.is_match(f))
})
}
async fn resolve_git_url_to_path(git_url: &str) -> Result<TaskFileArtifact> {
let no_cache = Settings::get().task.remote_no_cache.unwrap_or(false);
if !no_cache {
let task_file_providers = TaskFileProvidersBuilder::new().with_cache(true).build();
return match task_file_providers.get_provider(git_url) {
Some(provider) => provider.get_local_artifact(git_url).await,
None => bail!("No provider found for git URL: {}", git_url),
};
}
let source = RemoteSource::parse_git(git_url)
.ok_or_else(|| eyre!("No provider found for git URL: {}", git_url))?;
let cache_key = (source.url.clone(), source.git_ref.clone());
let checkout = REMOTE_TASK_INCLUDE_ARTIFACTS
.entry(cache_key)
.or_insert_with(|| Arc::new(OnceCell::new()))
.clone();
let checkout = checkout
.get_or_try_init(|| async {
let task_file_providers = TaskFileProvidersBuilder::new().with_cache(false).build();
let provider = task_file_providers
.get_provider(git_url)
.ok_or_else(|| eyre!("No provider found for git URL: {}", git_url))?;
let artifact = provider.get_local_artifact(git_url).await?;
let checkout_path = artifactView on GitHub (pinned to afd2eddd3a)
Solutions
- Check the git URL format — ensure it uses a supported form (e.g. `https://host/owner/repo.git` with an optional `#ref`).
- Disable `task.remote_no_cache` (remove the setting) so the fuller provider registry is consulted instead of only `RemoteSource::parse_git`.
- Vendor the task file locally instead of referencing it via git, then reference the local path in `[tasks]`.
- Check mise docs for supported remote task file hosts and configure a matching task_file provider.
Example fix
# before (mise.toml) [tools] [settings] task.remote_no_cache = true [tasks.lint] file = "git@git.internal:org/tasks.git#main" # after [tasks.lint] file = "https://github.com/org/tasks.git#main" # supported host, provider resolves it
Defensive patterns
Strategy: validation
Validate before calling
# Verify the remote task URL parses before committing it:
url="https://github.com/org/tasks.git#main"
case "$url" in
https://*|http://*) : ;;
*) echo "unsupported git URL format: $url"; exit 1 ;;
esac
mise tasks 2>&1 | grep -q 'No provider found' && { echo 'provider missing'; exit 1; } Prevention
- Use full https:// git URLs for remote task files, not scp-style (git@host:path) syntax.
- Avoid enabling task.remote_no_cache unless you know your URLs are supported by the strict parser.
- Test `mise tasks` after adding a remote task file reference in CI before merging.
- Prefer committing task files to the repo over remote git references when possible.
When it happens
Trigger: Referencing a remote task file via a git URL scheme that matches no configured task file provider and no built-in git remote source pattern — e.g. an unsupported host (`git@git.example.com:org/repo.git`), a malformed git URL, or `task.remote_no_cache = true` set so the provider-cache path is skipped and only `RemoteSource::parse_git` is consulted.
Common situations: Pointing `[tasks]` at a task file on a private/self-hosted git forge whose URL format mise doesn't recognize; a typo in the git URL (missing scheme or malformed ref); enabling `remote_no_cache` and discovering the shortcut parser is stricter than the provider registry.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- task {task_name} input group cycle: {}
- action prediction payload is too large
- task action manifest has an invalid identity
- task action manifest contains duplicate predictions
- remote action manifest keys must use blake3
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/33a59dafa597b54c.
Report an issue: GitHub.