NousResearch/hermes-agent · error · Error

Extension " " 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.

Solutions

  1. Verify the exact publisher.extension id on the Visual Studio Marketplace site and correct it.
  2. If the extension was pulled/renamed, update the app's extension list to the successor id.
  3. Check network/proxy: confirm the gallery query reached the real Marketplace endpoint and wasn't blocked or rewritten.
  4. 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

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


AI-assisted analysis of NousResearch/hermes-agent@c896c09c42 (2026-08-14). Data as JSON: /api/errors/aab10ab51627393d. Report an issue: GitHub.

Appendix: 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)