Hmbown/CodeWhale · error
plugin '{name}' was installed from a local path ({}) and can
Error message
plugin '{name}' was installed from a local path ({}) and cannot be updated from the network; reinstall it with /plugin install <path> What it means
Plugin update found the .installed-from marker recording a LocalPath install. Local bundles have no upstream to pull from, so network update is refused by design; the marker round-trip means the only path to new content is reinstalling from the (updated) local path.
Source
Thrown at crates/tui/src/plugins/install/mod.rs:406
user_plugins_dir: &Path,
max_size: u64,
network: &NetworkPolicy,
) -> Result<PluginUpdateResult> {
let target = plugin_target_path(name, user_plugins_dir)?;
if target.exists() {
ensure_target_within_plugins_dir(&target, user_plugins_dir)?;
}
let marker_path = target.join(INSTALLED_FROM_MARKER);
if !marker_path.exists() {
return Err(PluginInstallError::NotInstalledHere(name.to_string()).into());
}
let marker_body = fs::read_to_string(&marker_path)
.with_context(|| format!("failed to read {}", marker_path.display()))?;
let marker: InstalledFromMarker = serde_json::from_str(&marker_body)
.with_context(|| format!("malformed {INSTALLED_FROM_MARKER} for {name}"))?;
let source = PluginInstallSource::parse(&marker.spec)?;
let PluginInstallSource::Remote(remote) = source else {
bail!(
"plugin '{name}' was installed from a local path ({}) and cannot be updated from the network; \
reinstall it with /plugin install <path>",
marker.spec
);
};
let (bytes, url) = match fetch_tarball(&remote, network, max_size).await? {
FetchOutcome::Bytes { bytes, url } => (bytes, url),
FetchOutcome::NeedsApproval(host) => {
return Ok(PluginUpdateResult::NeedsApproval(host));
}
FetchOutcome::Denied(host) => return Ok(PluginUpdateResult::NetworkDenied(host)),
};
if sha256_hex(&bytes) == marker.source_checksum() {
return Ok(PluginUpdateResult::NoChange);
}
let outcome = install_remote_bytes(View on GitHub (pinned to 0c42157ee5)
Solutions
- Reinstall from the updated local path: /plugin install <path>
- Network update is not available for local installs
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at crates/tui/src/plugins/install/mod.rs:406 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20).
Data as JSON: /api/errors/80cac6a5ed65cfdd.
Report an issue: GitHub.