xai-org/grok-build · error
Unsupported release channel '{}' (current={}, target={}). Su
Error message
Unsupported release channel '{}' (current={}, target={}). Supported channels: stable, alpha, enterprise. Use --stable or --alpha to override, or set [cli] channel in config.toml. What it means
The updater resolves a release-channel comparison and could not find channel compatibility between the effective current version and the install target, even though both parse as valid semver. It distinguishes this from a parse failure and bails naming the configured channel (update_config.channel) plus the supported set: stable, alpha, enterprise.
Source
Thrown at crates/codegen/xai-grok-update/src/auto_update.rs:2837
} else {
let stable_ptr = try_fetch_stable_pointer().await;
write_version_cache(&install_target, stable_ptr.as_deref()).await;
eprintln!("Already up to date ({}).", effective_current);
// Retry if a prior sync failed.
refresh_deployment_config().await;
// The target is on disk even though this call installed
// nothing — report it so the caller still signals stale
// leaders to relaunch onto it (signalling is directional
// and skips leaders already at/after this version).
return Ok(Some(install_target));
}
}
None => {
// Distinguish parse failure from unsupported channel.
let parse_ok = semver::Version::parse(&effective_current).is_ok()
&& semver::Version::parse(&install_target).is_ok();
if parse_ok {
anyhow::bail!(
"Unsupported release channel '{}' (current={}, target={}). \
Supported channels: stable, alpha, enterprise. \
Use --stable or --alpha to override, or set [cli] channel in config.toml.",
update_config.channel,
effective_current,
install_target
);
} else {
anyhow::bail!(
"Failed to parse versions (current={}, target={})",
effective_current,
install_target
);
}
}
}
}
View on GitHub (pinned to bc7f02eddd)
Solutions
- Fix [cli] channel in config.toml to one of: stable, alpha, enterprise
- Re-run with the --stable or --alpha flag to override the configured channel for this invocation
- Check for typos or stray whitespace in the channel string in config.toml
- If the channel is set by enterprise management, ask the administrator to update the deployment config to a supported channel
Example fix
// config.toml (before) [cli] channel = "beta" // unsupported -> bails // after [cli] channel = "stable" // or "alpha" / "enterprise" # or run: grok-update install --stable
Defensive patterns
Strategy: validation
Validate before calling
const SUPPORTED_CHANNELS: [&str; 3] = ["stable", "alpha", "enterprise"];
let channel = config["cli"]["channel"].as_str().unwrap_or("stable");
if !SUPPORTED_CHANNELS.contains(&channel) {
eprintln!("Channel '{channel}' unsupported; use one of stable/alpha/enterprise");
std::process::exit(2);
} Type guard
fn is_supported_channel(c: &str) -> bool {
matches!(c, "stable" | "alpha" | "enterprise")
} Try / catch
match run_update(None).await {
Err(e) if e.to_string().starts_with("Unsupported release channel") => {
eprintln!("{e}"); // then retry with an explicit override
run_with_override(Channel::Stable).await
}
other => other.map(|_| ())?,
} Prevention
- Always set [cli] channel to exactly stable, alpha, or enterprise in config.toml
- Use --stable/--alpha flags rather than hand-editing channel config for one-off runs
- Add a config lint/CI check validating the channel value on commit
- Trim whitespace and lowercase channel values when loading config
When it happens
Trigger: semver::Version::parse succeeds for both effective_current and install_target, but the channel derived from them (or the channel set in [cli] channel of config.toml) is not one of stable/alpha/enterprise — e.g. channel is 'beta', 'dev', 'nightly', empty, or a typo.
Common situations: Typo'd channel in config.toml ([cli] channel = "stble"); a channel value copied from another tool; enterprise-managed channel renamed; user hand-editing config and using an unsupported channel name.
Related errors
- Session does not exist locally (session registry is disabled
- The change was applied, but Doctor still reports `{}`.
- The change was applied, but Doctor could not verify `{}` in
- Profile '{name}' extends '{base_name}', but 'off'/'none' is
- Profile '{name}' extends '{base_name}', but custom profiles
AI-assisted analysis of xai-org/grok-build@bc7f02eddd (2026-08-31).
Data as JSON: /api/errors/709fb35f24b4dc2d.
Report an issue: GitHub.