ipfs/kubo · error
method name %q is missing from Routing.Methods config param
Error message
method name %q is missing from Routing.Methods config param
What it means
Methods.Check in config/routing.go verifies that the Routing.Methods map contains an entry for every method name in MethodNameList. If any known method (e.g. provide, find-providers, get-ipns, put-ipns) is absent, this error is returned. The map is required to be exhaustive so routing behavior is always fully defined.
Source
Thrown at config/routing.go:76
// Router type ID. See RouterType for more info.
Type RouterType
// Parameters are extra configuration that this router might need.
// A common one for HTTP router is "Endpoint".
Parameters any
}
type (
Routers map[string]RouterParser
Methods map[MethodName]Method
)
func (m Methods) Check() error {
// Check supported methods
for _, mn := range MethodNameList {
_, ok := m[mn]
if !ok {
return fmt.Errorf("method name %q is missing from Routing.Methods config param", mn)
}
}
// Check unsupported methods
for k := range m {
seen := slices.Contains(MethodNameList, k)
if seen {
continue
}
return fmt.Errorf("method name %q is not a supported method on Routing.Methods config param", k)
}
return nil
}
type RouterParser struct {View on GitHub (pinned to 329838acdf)
Solutions
- Add the missing method key named in the error to Routing.Methods with a valid router value (e.g. "none", "dht", "delegated", or a custom router name).
- Run `ipfs config --json Routing.Methods '{...complete map...}'` with every entry from MethodNameList.
- If unsure, delete Routing.Methods and use Routing.Type defaults instead.
Example fix
// before (config.json)
"Routing": { "Methods": { "provide": "delegated" } }
// after
"Routing": { "Methods": { "provide": "delegated", "find-providers": "dht", "get-ipns": "dht", "put-ipns": "dht" } } Defensive patterns
Strategy: validation
Validate before calling
m, err := config.ParseMethods("...") // or build the map
if err := methods.Check(); err != nil {
return fmt.Errorf("Routing.Methods incomplete: %w", err)
} Try / catch
if err := methods.Check(); err != nil { return fmt.Errorf("routing config invalid: %w", err) } Prevention
- Always define every key listed in config.MethodNameList when setting Routing.Methods
- After kubo upgrades, re-check Routing.Methods for newly required method names
- Prefer Routing.Type over a hand-built Methods map when defaults suffice
When it happens
Trigger: Loading a config where Routing.Methods is present but missing one of the required method keys, e.g. setting only {"provide":"custom"} and omitting the others; Check is called by TestMethods and Parse during config parsing/validation.
Common situations: Partially migrating Routing.Type to a delegating router and hand-writing only the methods you think you need; older configs from a previous kubo version missing newly added method names after an upgrade.
Related errors
- method name %q is not a supported method on Routing.Methods
- private network does not work with Routing.Type=auto. Update
- Routing.Type=delegated does not support content providing. S
- Provide.DHT.KeystoreBatchSize must be positive, got %d
- Provide.DHT.OfflineDelay must be non-negative, got %v
AI-assisted analysis of ipfs/kubo@329838acdf (2026-09-03).
Data as JSON: /api/errors/3c49fd6720190914.
Report an issue: GitHub.