can1357/oh-my-pi · error · Error
Marketplace catalog name changed from "${name}" to "${catalo
Error message
Marketplace catalog name changed from "${name}" to "${catalog.name}". Remove and re-add the marketplace to update. What it means
updateMarketplace guards against the upstream catalog renaming itself: since registry entries are keyed by catalog name, silently accepting a rename would corrupt the entry on next read. It throws after cleaning up the temp clone, telling the user to remove and re-add the marketplace.
Source
Thrown at packages/coding-agent/src/extensibility/plugins/marketplace/manager.ts:166
logger.debug("Marketplace removed", { name });
}
async updateMarketplace(name: string): Promise<MarketplaceRegistryEntry> {
const reg = await readMarketplacesRegistry(this.#opts.marketplacesRegistryPath);
const existing = getMarketplaceEntry(reg, name);
if (!existing) {
throw new Error(`Marketplace "${name}" not found`);
}
const { catalog, clonePath } = await fetchMarketplace(existing.sourceUri, this.#opts.marketplacesCacheDir);
// Guard against upstream catalog silently renaming itself — the registry
// entry is keyed by name, so a drift would corrupt the entry on next read.
if (catalog.name !== name) {
if (clonePath) {
await fs.rm(clonePath, { recursive: true, force: true }).catch(() => {});
}
throw new Error(
`Marketplace catalog name changed from "${name}" to "${catalog.name}". ` +
`Remove and re-add the marketplace to update.`,
);
}
// Promote the temp clone to its final cache location now that drift check passed.
if (clonePath) {
await promoteCloneToCache(clonePath, this.#opts.marketplacesCacheDir, catalog.name);
}
// Overwrite the cached catalog and migrate legacy home-relative registry entries.
const catalogPath = path.resolve(expandTilde(existing.catalogPath));
await Bun.write(catalogPath, `${JSON.stringify(catalog, null, 2)}\n`);
const updatedEntry: MarketplaceRegistryEntry = {
...existing,
catalogPath,
updatedAt: new Date().toISOString(),View on GitHub (pinned to 9690622007)
Solutions
- As the message says: remove the marketplace (removeMarketplace(name)) and add it again with the new source — the registry will pick up the new name.
- If the rename was unintentional upstream, contact the maintainer or pin to a revision/URL that still has the old name.
- Update any scripts/automation to reference the new marketplace name after re-adding.
Example fix
// before: blind update fails on rename
await manager.updateMarketplace("old-name");
// after: remove and re-add
await manager.removeMarketplace("old-name");
await manager.addMarketplace("https://example.com/marketplace.json"); // now named "new-name" Defensive patterns
Strategy: try-catch
Try / catch
try {
await manager.updateMarketplace(name);
} catch (err) {
if ((err as Error).message.includes("name changed from")) {
await manager.removeMarketplace(name);
await manager.addMarketplace(sourceUri); // re-register under the new catalog name
} else throw err;
} Prevention
- Pin marketplace sources to a stable revision/URL to avoid upstream renames.
- Automate the remove-and-re-add recovery path in scripts that call updateMarketplace.
- Coordinate with marketplace maintainers so catalog renames are announced.
When it happens
Trigger: updateMarketplace(name) succeeds in fetching, but the fetched catalog's `name` differs from the registered `name` — upstream renamed their catalog, or the source was repointed (e.g. the same URL now serves a different marketplace).
Common situations: A marketplace maintainer renames their catalog between releases and you run update; a URL/tarball source is overwritten with a differently-named marketplace; a fork reusing the same source URI under a new name.
Related errors
- Marketplace "${catalog.name}" already exists
- Marketplace "${name}" not found
- Marketplace "${marketplace}" not found
- Debug session ${root.id} is still active. Terminate it befor
- Invalid marketplace name for cache: "${marketplace}"
AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31).
Data as JSON: /api/errors/77ec55fa0ceaeee5.
Report an issue: GitHub.