ipfs/kubo · error

key export expects repo version (%d) but found (%d)

Error message

key export expects repo version (%d) but found (%d)

What it means

Repo-version compatibility check in `ipfs key export`: the on-disk repository version at the config root (read via migrations.RepoVersion) differs from the fsrepo.RepoVersion this binary supports. Export reads the keystore files directly without the repo lock, so it must not run against a repo written by a different (older or newer) Kubo version whose keystore layout may differ.

Source

Thrown at core/commands/keystore.go:209

	Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
		name := req.Arguments[0]

		if name == "self" {
			return fmt.Errorf("cannot export key with name 'self'")
		}

		cfgRoot, err := cmdenv.GetConfigRoot(env)
		if err != nil {
			return err
		}

		// Check repo version, and error out if not matching
		ver, err := migrations.RepoVersion(cfgRoot)
		if err != nil {
			return err
		}
		if ver != fsrepo.RepoVersion {
			return fmt.Errorf("key export expects repo version (%d) but found (%d)", fsrepo.RepoVersion, ver)
		}

		// Export is read-only: safe to read it without acquiring repo lock
		// (this makes export work when ipfs daemon is already running)
		ksp := filepath.Join(cfgRoot, "keystore")
		ks, err := keystore.NewFSKeystore(ksp)
		if err != nil {
			return err
		}

		sk, err := ks.Get(name)
		if err != nil {
			return fmt.Errorf("key with name '%s' doesn't exist", name)
		}

		exportFormat, _ := req.Options[keyFormatOptionName].(string)
		var formattedKey []byte
		switch exportFormat {

View on GitHub (pinned to 329838acdf)

Solutions

  1. Run the matching Kubo version that created the repository
  2. Run ipfs daemon (or the migration tool) once to migrate the repo to this binary's version
  3. Point IPFS_PATH at the correct repository if the wrong one was targeted
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/commands/keystore.go:209 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ipfs/kubo@329838acdf (2026-09-03). Data as JSON: /api/errors/531a35e589cdbfc3. Report an issue: GitHub.