ipfs/kubo · error

remote service failed to pin requestid=%q

Error message

remote service failed to pin requestid=%q

What it means

Fired by `ipfs pin remote add` when running in foreground mode: after submitting the pin, the command polls the remote pinning service via GetStatusByID, and the returned status indicates the remote service failed to complete the pin for the given request ID. It signals that the failure happened on the remote service side, not locally.

Source

Thrown at core/commands/pin/remotepin.go:250

		// Block unless --background=true is passed
		if !req.Options[pinBackgroundOptionName].(bool) {
			const pinWaitTime = 500 * time.Millisecond
			var timer *time.Timer
			requestID := ps.GetRequestId()
			for {
				ps, err = c.GetStatusByID(ctx, requestID)
				if err != nil {
					return fmt.Errorf("failed to check pin status for requestid=%q due to error: %v", requestID, err)
				}
				if ps.GetRequestId() != requestID {
					return fmt.Errorf("failed to check pin status for requestid=%q, remote service sent unexpected requestid=%q", requestID, ps.GetRequestId())
				}
				s := ps.GetStatus()
				if s == pinclient.StatusPinned {
					break
				}
				if s == pinclient.StatusFailed {
					return fmt.Errorf("remote service failed to pin requestid=%q", requestID)
				}
				if timer == nil {
					timer = time.NewTimer(pinWaitTime)
				} else {
					timer.Reset(pinWaitTime)
				}
				select {
				case <-timer.C:
				case <-ctx.Done():
					timer.Stop()
					return fmt.Errorf("waiting for pin interrupted, requestid=%q remains on remote service", requestID)
				}
			}
		}

		return res.Emit(toRemotePinOutput(ps, enc))
	},
	Encoders: cmds.EncoderMap{

View on GitHub (pinned to 329838acdf)

Solutions

  1. Inspect the failure details with 'ipfs pin remote ls --status failed --service <name>' (the service often includes an info field)
  2. Verify the node/service can actually fetch the content (the service must be able to retrieve the DAG)
  3. Retry the add once the underlying cause (connectivity, storage quota, timeout) is fixed, and remove the failed pin entry first
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at core/commands/pin/remotepin.go:250 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/af8b94c02007b128. Report an issue: GitHub.