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

  1. Fix [cli] channel in config.toml to one of: stable, alpha, enterprise
  2. Re-run with the --stable or --alpha flag to override the configured channel for this invocation
  3. Check for typos or stray whitespace in the channel string in config.toml
  4. 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

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


AI-assisted analysis of xai-org/grok-build@bc7f02eddd (2026-08-31). Data as JSON: /api/errors/709fb35f24b4dc2d. Report an issue: GitHub.