NousResearch/hermes-agent · error · Error
Extension "${id}" was not found on the Marketplace.
Error message
Extension "${id}" was not found on the Marketplace. What it means
Thrown by resolveExtension() in the desktop app's VS Code Marketplace client when a gallery query for a publisher.extension id (FilterType 7 = ExtensionName, pageSize 1, flags 914) returns a result set whose first result has no extension entry. The Marketplace call itself succeeded but found nothing for that exact id.
Source
Thrown at apps/desktop/electron/vscode-marketplace.ts:107
req.end()
})
}
/** Resolve `{ displayName, vsixUrl }` for the latest version of `id`. */
async function resolveExtension(id) {
const json = await queryGallery({
// FilterType 7 = ExtensionName (the full publisher.extension id).
filters: [{ criteria: [{ filterType: 7, value: id }], pageNumber: 1, pageSize: 1 }],
// Flags: IncludeFiles | IncludeVersionProperties | IncludeAssetUri |
// IncludeCategoryAndTags | IncludeLatestVersionOnly = 914.
flags: 914
})
const extension = json?.results?.[0]?.extensions?.[0]
if (!extension) {
throw new Error(`Extension "${id}" was not found on the Marketplace.`)
}
const version = extension.versions?.[0]
if (!version) {
throw new Error(`Extension "${id}" has no published versions.`)
}
const asset = (version.files ?? []).find(file => file.assetType === VSIX_ASSET_TYPE)
const vsixUrl = asset?.source
if (!vsixUrl) {
throw new Error(`Could not find a downloadable package for "${id}".`)
}
return { displayName: extension.displayName || id, vsixUrl }
}
View on GitHub (pinned to c896c09c42)
Solutions
- Verify the exact publisher.extension id on the Visual Studio Marketplace site and correct it.
- If the extension was pulled/renamed, update the app's extension list to the successor id.
- Check network/proxy: confirm the gallery query reached the real Marketplace endpoint and wasn't blocked or rewritten.
- For OpenVSX-only extensions, use an OpenVSX-aware resolution path instead of the MS gallery.
Example fix
// before
await resolveExtension('ms-python.python ')
// after
await resolveExtension('ms-python.python') Defensive patterns
Strategy: validation
Validate before calling
const EXTENSION_ID_RE = /^[\w.-]+\.[\w.-]+$/
function isWellFormedExtensionId(id: string): boolean {
const t = id.trim()
return EXTENSION_ID_RE.test(t) && !t.includes(' ')
}
if (!isWellFormedExtensionId(id)) rejectInput('expected a publisher.extension id') Type guard
function isExtensionId(id: unknown): id is string {
return typeof id === 'string' && /^[\w.-]+\.[\w.-]+$/.test(id.trim())
} Try / catch
try {
return await resolveExtension(id)
} catch (e) {
if (e instanceof Error && e.message.includes('was not found on the Marketplace')) {
return { skipped: id, reason: 'not-found' } // degrade to a skip entry, continue the batch
}
throw e
} Prevention
- Validate the publisher.extension shape and trim input before querying the gallery.
- Curate hardcoded extension lists against the live Marketplace in CI so dead ids fail builds, not users.
- Remember the MS gallery and OpenVSX have different catalogs — check the right one.
When it happens
Trigger: Calling resolveExtension(id) with a typo'd, unpublished, unlisted, or withdrawn extension id; an id with wrong casing/separator such that exact ExtensionName matching fails; a proxy returning a cached empty response.
Common situations: A hardcoded extension list containing an id that was renamed or removed from the Marketplace; user-supplied id with a typo or stray space; an extension published only to OpenVSX, not the MS Marketplace.
Related errors
- Extension "${id}" has no published versions.
- "${result.extensionId}" does not contribute any color themes
- Gateway did not return a WS ticket.
- Reached the gateway over HTTP, but the live WebSocket (/api/
- Could not fetch image: ${response.status}
AI-assisted analysis of NousResearch/hermes-agent@c896c09c42 (2026-08-14).
Data as JSON: /api/errors/aab10ab51627393d.
Report an issue: GitHub.