hasura/graphql-engine · error

plugin %q does not offer installation for this platform

Error message

plugin %q does not offer installation for this platform

What it means

Install() calls MatchPlatform(plugin.Platforms) to find a platform entry in the plugin manifest matching the current OS/architecture (GOOS/GOARCH). When no platform entry matches, ok is false and this error is returned: the plugin simply has no build distributed for the machine running the install. It is a manifest-content problem, not a download failure.

Source

Thrown at cli/plugins/plugins.go:217

	return plugin, nil
}

func (c *Config) Install(plugin Plugin) error {
	var op errors.Op = "plugins.Config.Install"
	// Find available installation platform
	platform, ok, err := MatchPlatform(plugin.Platforms)
	if err != nil {
		return errors.E(
			op,
			fmt.Errorf("failed trying to find a matching platform in plugin spec: %w", err),
		)
	}

	if !ok {
		return errors.E(
			op,
			fmt.Errorf("plugin %q does not offer installation for this platform", plugin.Name),
		)
	}

	if err := c.installPlugin(plugin, platform); err != nil {
		return errors.E(op, fmt.Errorf("install failed: %w", err))
	}

	err = c.StoreManifest(plugin, c.Paths.PluginInstallReceiptPath(plugin.Name))
	if err != nil {
		return errors.E(
			op,
			fmt.Errorf("installation receipt could not be stored, uninstall may fail: %w", err),
		)
	}

	return nil
}

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Check your platform with go env GOOS GOARCH and verify the plugin's manifest Platforms list contains a matching os/arch entry
  2. If installing from a manifest file, edit it to add (or point at) a platform entry matching your OS/architecture
  3. Ask the plugin author to publish a build for your platform, or build the plugin binary locally and reference it via a manifest file
  4. As a workaround on Apple Silicon, run the install under Rosetta using an amd64 build of the CLI if an amd64 platform entry exists

Example fix

// plugin manifest before
"platforms": {
  "linux_amd64": { "os": "linux", "arch": "amd64", "bin": "./myplugin" }
}
// after (add the missing target)
"platforms": {
  "linux_amd64": { "os": "linux", "arch": "amd64", "bin": "./myplugin" },
  "darwin_arm64": { "os": "darwin", "arch": "arm64", "bin": "./myplugin" }
}
Defensive patterns

Strategy: validation

Validate before calling

import (
	"runtime"
)

func supportsPlatform(p Plugin) bool {
	_, ok, err := MatchPlatform(p.Platforms)
	return err == nil && ok
}

// before Install:
if !supportsPluginRuntime(plugin, runtime.GOOS, runtime.GOARCH) {
	// skip or pick another artifact instead of calling Install
}

Try / catch

err := cfg.Install(plugin)
if err != nil && strings.Contains(err.Error(), "does not offer installation for this platform") {
	// surface a friendly message about missing OS/arch support
}

Prevention

When it happens

Trigger: Calling Config.Install (or the plugin install CLI command) for a plugin whose Platforms list lacks an entry for the current runtime (e.g. installing a plugin that only ships linux/amd64 binaries from darwin/arm64, or a windows-only plugin on Linux). Also triggered by a manifest with a mismatched or misspelled os/arch key such as "os": "Linux".

Common situations: Installing a plugin from a custom manifest file that omits the user's platform; plugin authors forgetting to publish a cross-platform release; attempting install on Apple Silicon when only amd64 artifacts were published; typo in the Platforms section of the plugin manifest.

Related errors


AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28). Data as JSON: /api/errors/4efe5b6eeef3c9ff. Report an issue: GitHub.