{"record":{"id":"de3a2ec6bb7b1165","repo":"hashicorp/nomad","slug":"invalid-server-client-introduction-configuration","errorCode":null,"errorMessage":"invalid server.client_introduction configuration: %w","messagePattern":"invalid server\\.client_introduction configuration: %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"command/agent/agent.go","lineNumber":750,"sourceCode":"\t\t\truntime.NumCPU())\n\t}\n\n\t// If the operator has specified a client introduction server config block,\n\t// translate this into the internal server configuration object.\n\tif agentConfig.Server.ClientIntroduction != nil {\n\t\tif agentConfig.Server.ClientIntroduction.Enforcement != \"\" {\n\t\t\tconf.NodeIntroductionConfig.Enforcement = agentConfig.Server.ClientIntroduction.Enforcement\n\t\t}\n\t\tif agentConfig.Server.ClientIntroduction.DefaultIdentityTTL > 0 {\n\t\t\tconf.NodeIntroductionConfig.DefaultIdentityTTL = agentConfig.Server.ClientIntroduction.DefaultIdentityTTL\n\t\t}\n\t\tif agentConfig.Server.ClientIntroduction.MaxIdentityTTL > 0 {\n\t\t\tconf.NodeIntroductionConfig.MaxIdentityTTL = agentConfig.Server.ClientIntroduction.MaxIdentityTTL\n\t\t}\n\t}\n\n\tif err := conf.NodeIntroductionConfig.Validate(); err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid server.client_introduction configuration: %w\", err)\n\t}\n\n\t// Copy LogFile config value\n\tconf.LogFile = agentConfig.LogFile\n\n\treturn conf, nil\n}\n\n// serverConfig is used to generate a new server configuration struct\n// for initializing a nomad server.\nfunc (a *Agent) serverConfig() (*nomad.Config, error) {\n\tc, err := convertServerConfig(a.config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ta.finalizeServerConfig(c)\n\treturn c, nil","sourceCodeStart":732,"sourceCodeEnd":768,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/command/agent/agent.go#L732-L768","documentation":"When server.client_introduction is configured, convertServerConfig translates it into the internal ClientIntroductionConfig and calls its Validate() method. If validation fails, the underlying error is wrapped with this message and agent configuration aborts. This indicates a structurally or semantically invalid client_introduction block.","triggerScenarios":"Supplying a server.client_introduction block whose fields fail ClientIntroductionConfig.Validate() (e.g. missing required fields or malformed values) during agent startup or reload via handleReload.","commonSituations":"Misconfigured or incomplete client_introduction blocks copied from docs; invalid host/port fields; upgrading Nomad and introducing new client_introduction keys with wrong values.","solutions":["Read the wrapped cause (%w) after this message for the specific field that failed Validate().","Fix the offending field in the server.client_introduction block (correct address/port/format).","Remove the client_introduction block if the feature is not needed so defaults apply.","Check the Nomad version's documented schema for client_introduction."],"exampleFix":"// before\nserver {\n  client_introduction {\n    # missing required field\n  }\n}\n// after\nserver {\n  client_introduction {\n    required_field = \"valid-value\"\n  }\n}","handlingStrategy":"validation","validationCode":"cic := buildClientIntroductionConfig(agentCfg)\nif err := cic.Validate(); err != nil {\n  return fmt.Errorf(\"client_introduction invalid before agent start: %w\", err)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run Validate() on your client_introduction struct in CI config tests.","Check the wrapped cause message for the exact failing field.","Keep client_introduction blocks in sync with your Nomad version's schema."],"tags":["config","nomad","validation"],"backgroundTag":"invalid-config-value","analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}