astrid-runtime/astrid · error
-managed installs follow only stable; use a self-managed…
Error message
{method}-managed installs follow only stable; use a self-managed Astrid install for '{channel}'. What it means
When the install method manages its own binary (e.g. Homebrew or cargo rather than Astrid's self-update), only the Stable channel is allowed for update notices. Selecting any other channel (beta/nightly) is rejected with guidance to use a self-managed install for prerelease channels. Package managers should not be told to install non-stable builds.
Solutions
- Use `--channel stable` (or omit the channel) for package-manager-managed installs.
- To follow beta/nightly, migrate to a self-managed install: download the official self-managed build and install it, then select the desired channel.
- If you need prereleases from the package manager, request them upstream (e.g. brew tap with a beta formula).
Example fix
// before $ astrid self update --channel beta # brew-managed install error: homebrew-managed installs follow only stable... // after $ astrid self update # stable only for brew/cargo installs # or switch to a self-managed install to use beta
Defensive patterns
Strategy: validation
Validate before calling
if install_method.manages_own_binary() && channel != UpdateChannel::Stable {
eprintln!("managed installs only support the stable channel");
} Prevention
- Only pass --channel with self-managed installs.
- Default scripts and CI to the stable channel.
- Document that beta/nightly requires the self-managed installer.
When it happens
Trigger: Running `astrid self update --channel beta` (or nightly) on an install where method.manages_own_binary() is true — i.e. Astrid was installed via Homebrew/cargo — during run_self_update's managed-channel handling.
Common situations: Users who installed via `brew install astrid` or `cargo install` trying to switch to a prerelease channel; scripts that pass a non-stable channel unconditionally.
Related errors
- package-managed method has an update command
- cannot resolve install directory for
- capsule ' ': branch/rev require building from source and…
- {detail}: {error}
- executable replacement directories must exist
AI-assisted analysis of astrid-runtime/astrid@affd8760f4 (2026-09-09).
Data as JSON: /api/errors/422f67a5c5d10476.
Report an issue: GitHub.
Appendix: source
Thrown at crates/astrid-cli/src/commands/self_update_notice.rs:145
InstallMethod::Cargo => {
format!("cargo install astrid --version ={selected_version} --force")
},
InstallMethod::SelfManaged => unreachable!("self-managed installs update in place"),
})
}
pub(super) fn handle_managed_channel(
method: InstallMethod,
channel: UpdateChannel,
current: &semver::Version,
selected: &semver::Version,
selected_version: &str,
) -> anyhow::Result<bool> {
if !method.manages_own_binary() {
return Ok(false);
}
if channel != UpdateChannel::Stable {
bail!(
"{}-managed installs follow only stable; use a self-managed Astrid install for '{}'.",
method.label(),
channel
);
}
if selected == current {
return Ok(false);
}
let how = managed_update_command(method, current, selected, selected_version)
.expect("package-managed method has an update command");
let message = if selected < current {
format!(
"The signed stable channel rolled back v{CURRENT_VERSION} → v{selected_version}. Apply the package-managed rollback with:\n {how}"
)
} else {
format!(
"Astrid was installed via {}. Update to signed stable v{selected_version} with:\n {how}",
method.label()View on GitHub (pinned to affd8760f4)