{"record":{"id":"551d9ccc75d52636","repo":"ipfs/kubo","slug":"unsupported-path-namespace-s","errorCode":null,"errorMessage":"unsupported path namespace: %s","messagePattern":"unsupported path namespace: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/coreapi/path.go","lineNumber":59,"sourceCode":"\tctx, span := tracing.Span(ctx, \"CoreAPI\", \"ResolvePath\", trace.WithAttributes(attribute.String(\"path\", p.String())))\n\tdefer span.End()\n\n\tres, err := namesys.Resolve(ctx, api.namesys, p)\n\tif errors.Is(err, namesys.ErrNoNamesys) {\n\t\treturn path.ImmutablePath{}, nil, coreiface.ErrOffline\n\t} else if err != nil {\n\t\treturn path.ImmutablePath{}, nil, err\n\t}\n\tp = res.Path\n\n\tvar resolver ipfspathresolver.Resolver\n\tswitch p.Namespace() {\n\tcase path.IPLDNamespace:\n\t\tresolver = api.ipldPathResolver\n\tcase path.IPFSNamespace:\n\t\tresolver = api.unixFSPathResolver\n\tdefault:\n\t\treturn path.ImmutablePath{}, nil, fmt.Errorf(\"unsupported path namespace: %s\", p.Namespace())\n\t}\n\n\timPath, err := path.NewImmutablePath(p)\n\tif err != nil {\n\t\treturn path.ImmutablePath{}, nil, err\n\t}\n\n\tnode, remainder, err := resolver.ResolveToLastNode(ctx, imPath)\n\tif err != nil {\n\t\treturn path.ImmutablePath{}, nil, err\n\t}\n\n\tsegments := []string{p.Namespace(), node.String()}\n\tsegments = append(segments, remainder...)\n\n\tp, err = path.NewPathFromSegments(segments...)\n\tif err != nil {\n\t\treturn path.ImmutablePath{}, nil, err","sourceCodeStart":41,"sourceCodeEnd":77,"githubUrl":"https://github.com/ipfs/kubo/blob/329838acdfafae224582930457efe80aa217afc0/core/coreapi/path.go#L41-L77","documentation":"ResolvePath only knows two path namespaces: IPLD (/ipld/) and IPFS (/ipfs/, which resolves via the UnixFS resolver). Any other namespace on the passed path — /ipns/, /dag/, /p2p/ or a malformed path — is rejected with this error naming the unsupported namespace.","triggerScenarios":"Passing an /ipns/... path, a /dag/... path, or a bare CID/path that fails namespace detection to ResolvePath (indirectly from pin add, pin ls, cat/get via ResolveNode, objectsForPaths).","commonSituations":"Pinning an IPNS name directly instead of resolving it first; passing 'dag' RPC-style CIDs into the CoreAPI pin API; older code paths using /ipns/ with the pin API.","solutions":["Resolve IPNS names first (e.g. coreapi ResolveNode on /ipns/ or 'ipfs name resolve') then pin the resulting /ipfs/ path","Use /ipld/ or /ipfs/ prefixed paths as appropriate","Verify the path string starts with /ipfs/ or /ipld/ before calling"],"exampleFix":"// before\napi.Pin().Add(ctx, path.New(\"/ipns/my-domain.com\"))\n// after\np, _ := api.Unixfs().ResolvePath? -> resolve via name first\nresolved, _ := api.ResolveNode(ctx, path.New(\"/ipns/my-domain.com\"))\napi.Pin().Add(ctx, path.FromCid(resolved.Cid()))","handlingStrategy":"validation","validationCode":"p := path.New(pstring)\nns := p.Namespace()\nif ns != path.IPFSNamespace && ns != path.IPLDNamespace {\n    // resolve /ipns/ names first or reject the input\n}","typeGuard":"func isResolvableCoreAPIPath(p path.Path) bool {\n\tns := p.Namespace()\n\treturn ns == path.IPFSNamespace || ns == path.IPLDNamespace\n}","tryCatchPattern":null,"preventionTips":["Normalize inputs to /ipfs/ or /ipld/ before CoreAPI calls","Resolve IPNS names via name resolve first","Validate namespace strings at API boundaries"],"tags":["path","namespace","ipns","resolution"],"backgroundTag":"unsupported-path-namespace","analyzedSha":"329838acdfafae224582930457efe80aa217afc0","analyzedAt":"2026-09-03T18:30:52.135Z","contentChangedAt":"2026-09-03T18:30:52.135Z","schemaVersion":2},"datasetVersion":"2026-09-11T00:17:11.886Z"}