ipfs/kubo · error

failed to load remote pinning services info (%v)

Error message

failed to load remote pinning services info (%v)

What it means

During 'ipfs config replace', loading the current Pinning.RemoteServices from the existing repo config failed, so the sanity check comparing old and new service lists cannot run and the replace is aborted. %v is the underlying read error, typically a corrupt or unreadable config.

Source

Thrown at core/commands/config.go:682

	pkstr, ok := keyF.Value.(string)
	if !ok {
		return errors.New("private key in config was not a string")
	}

	newCfg.Identity.PrivKey = pkstr
	id, err := nodePeerID(r)
	if err != nil {
		return err
	}
	newCfg.Identity.PeerID = id.String()

	// Handle Pinning.RemoteServices (API.Key of each service is a secret)

	newServices := newCfg.Pinning.RemoteServices
	oldServices, err := getRemotePinningServices(r)
	if err != nil {
		return fmt.Errorf("failed to load remote pinning services info (%v)", err)
	}

	// fail fast if service lists are obviously different
	if len(newServices) != len(oldServices) {
		return errors.New("cannot add or remove remote pinning services with 'config replace'")
	}

	// re-apply API details and confirm every modified service already existed
	for name, oldSvc := range oldServices {
		if newSvc, hadSvc := newServices[name]; hadSvc {
			// fail if input changes any of API details
			// (interop with config show: allow Endpoint as long it did not change)
			if len(newSvc.API.Key) != 0 || (len(newSvc.API.Endpoint) != 0 && newSvc.API.Endpoint != oldSvc.API.Endpoint) {
				return errors.New("cannot change remote pinning services api info with `config replace`")
			}
			// re-apply API details and store service in updated config
			newSvc.API = oldSvc.API
			newCfg.Pinning.RemoteServices[name] = newSvc

View on GitHub (pinned to 329838acdf)

Solutions

  1. Inspect the wrapped error and the current config file's Pinning.RemoteServices section
  2. Restore a valid config backup, then retry the replace
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at core/commands/config.go:682 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/5e7d6a030651549a. Report an issue: GitHub.