ipfs/kubo · error

pinning root %q FAILED: %s

Error message

pinning root %q FAILED: %s

What it means

'ipfs dag import' imported the blocks but failed to pin the DAG root: the wrapped PinErrorMsg comes from the pinning step (e.g. pin already exists under a different recursive pin, or a datastore write failure). %q is the root CID; the data is in the blockstore but not pinned as requested.

Source

Thrown at core/commands/dag/dag.go:261

				}
				stats, _ := req.Options[statsOptionName].(bool)
				if stats {
					fmt.Fprintf(w, "Imported %d blocks (%d bytes)\n", event.Stats.BlockCount, event.Stats.BlockBytesCount)
				}
				return nil
			}

			if event.Stats != nil {
				return fmt.Errorf("unexpected message from DAG import")
			}

			enc, err := cmdenv.GetCidEncoder(req)
			if err != nil {
				return err
			}

			if event.Root.PinErrorMsg != "" {
				return fmt.Errorf("pinning root %q FAILED: %s", enc.Encode(event.Root.Cid), event.Root.PinErrorMsg)
			}

			event.Root.PinErrorMsg = "success"

			_, err = fmt.Fprintf(
				w,
				"Pinned root\t%s\t%s\n",
				enc.Encode(event.Root.Cid),
				event.Root.PinErrorMsg,
			)
			return err
		}),
	},
}

// DagExportCmd is a command for exporting an ipfs dag to a car
var DagExportCmd = &cmds.Command{
	Helptext: cmds.HelpText{

View on GitHub (pinned to 329838acdf)

Solutions

  1. Check the embedded PinErrorMsg for the specific pin failure
  2. Manually pin the root afterwards with 'ipfs pin add' once the cause is resolved
  3. Free space or repair the datastore if the embedded error is storage-related
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/commands/dag/dag.go:261 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/cba884bfe72e4d9a. Report an issue: GitHub.