{"record":{"id":"573dbf45bbc3657d","repo":"ipfs/kubo","slug":"s-is-not-a-profile","errorCode":null,"errorMessage":"%s is not a profile","messagePattern":"(.+?) is not a profile","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/commands/config.go","lineNumber":445,"sourceCode":"\tSubcommands: map[string]*cmds.Command{\n\t\t\"apply\": configProfileApplyCmd,\n\t},\n}\n\nvar configProfileApplyCmd = &cmds.Command{\n\tHelptext: cmds.HelpText{\n\t\tTagline: \"Apply profile to config.\",\n\t},\n\tOptions: []cmds.Option{\n\t\tcmds.BoolOption(configDryRunOptionName, \"print difference between the current config and the config that would be generated\"),\n\t},\n\tArguments: []cmds.Argument{\n\t\tcmds.StringArg(\"profile\", true, false, \"The profile to apply to the config.\"),\n\t},\n\tRun: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {\n\t\tprofile, ok := config.Profiles[req.Arguments[0]]\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"%s is not a profile\", req.Arguments[0])\n\t\t}\n\n\t\tdryRun, _ := req.Options[configDryRunOptionName].(bool)\n\t\tcfgRoot, err := cmdenv.GetConfigRoot(env)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\toldCfg, newCfg, err := transformConfig(cfgRoot, req.Arguments[0], profile.Transform, dryRun)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\toldCfgMap, err := scrubPrivKey(oldCfg)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n","sourceCodeStart":427,"sourceCodeEnd":463,"githubUrl":"https://github.com/ipfs/kubo/blob/329838acdfafae224582930457efe80aa217afc0/core/commands/config.go#L427-L463","documentation":"`ipfs config profile apply <name>` looks the profile up in config.Profiles, the registry of built-in profiles (server, local-discovery, test, etc.). If the name is absent from that map, Kubo returns '<name> is not a profile' without touching the config.","triggerScenarios":"`ipfs config profile apply <name>` with a misspelled name, a custom/invented name, or a deprecated/removed profile name from old documentation.","commonSituations":"Following outdated tutorials referencing retired profiles; typos in profile names; expecting user-defined profiles to be supported (they are not — only built-ins); scripts parameterized over profile names.","solutions":["List valid names in the docs/help: `ipfs config profile apply --help` documents the built-in profiles","Use an existing profile such as server, local-discovery, test, default-datastore, flat-fs, badgerds","Fix the spelling of the profile name","If you need custom defaults, script `ipfs config set`/`ipfs config replace` calls instead of a profile"],"exampleFix":"// before\n$ ipfs config profile apply serverr\nserverr is not a profile\n// after\n$ ipfs config profile apply server\napplied profile 'server'","handlingStrategy":"validation","validationCode":"known=\"server local-discovery test default-datastore flat-fs badgerds\"; [[ \" $known \" == *\" $p \"* ]] || { echo \"$p is not a profile\"; exit 1; }","typeGuard":null,"tryCatchPattern":"if err := run(\"ipfs\", \"config\", \"profile\", \"apply\", p); err != nil {\n\tif strings.HasSuffix(err.Error(), \"is not a profile\") {\n\t\t// surface the list of valid profiles to the caller\n\t}\n}","preventionTips":["Read `ipfs config profile apply --help` for the current built-in profile list","Never invent profile names; custom defaults belong in scripts or `ipfs config replace`","Re-check profile names after upgrading Kubo; profiles can be added or deprecated"],"tags":["config","cli","profile"],"backgroundTag":"invalid-profile-name","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"}