{"record":{"id":"5398b179d65628f8","repo":"air-verse/air","slug":"entrypoint-values-must-be-strings-got-t","errorCode":null,"errorMessage":"entrypoint values must be strings, got %T","messagePattern":"entrypoint values must be strings, got %T","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"runner/config.go","lineNumber":77,"sourceCode":"\tProxy       cfgProxy  `toml:\"proxy\"`\n}\n\ntype entrypoint []string\n\nfunc (e *entrypoint) UnmarshalTOML(v interface{}) error {\n\tswitch val := v.(type) {\n\tcase nil:\n\t\t*e = nil\n\t\treturn nil\n\tcase string:\n\t\t*e = []string{val}\n\t\treturn nil\n\tcase []interface{}:\n\t\tvalues := make([]string, len(val))\n\t\tfor i, raw := range val {\n\t\t\ts, ok := raw.(string)\n\t\t\tif !ok {\n\t\t\t\treturn fmt.Errorf(\"entrypoint values must be strings, got %T\", raw)\n\t\t\t}\n\t\t\tvalues[i] = s\n\t\t}\n\t\t*e = values\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"entrypoint must be a string or array of strings, got %T\", v)\n\t}\n}\n\nfunc (e entrypoint) binary() string {\n\tif len(e) == 0 {\n\t\treturn \"\"\n\t}\n\treturn e[0]\n}\n\nfunc (e entrypoint) args() []string {","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/air-verse/air/blob/71ea1dee05248122ed22b5870c7fb20a90d80ddd/runner/config.go#L59-L95","documentation":"The custom `entrypoint` TOML unmarshaler accepts a string or an array of strings; if an array element is not a string (e.g. a number or boolean), it returns this error naming the offending Go type. It fails during TOML decoding of the `build.entrypoint` key.","triggerScenarios":"A `.air.toml` containing `entrypoint = [\"./tmp/main\", 8080]` or any array with a non-string element (int, bool, nested array) parsed via UnmarshalTOML.","commonSituations":"Users putting port numbers or flags without quotes into the entrypoint array, e.g. `entrypoint = [\"./tmp/main\", 8080]` instead of `[\"./tmp/main\", \"8080\"]`.","solutions":["Quote every element of the entrypoint array so all are strings","Use a single string form `entrypoint = \"./tmp/main arg\"` if simpler","Run `air init` to see the canonical example format"],"exampleFix":"// before (.air.toml)\nentrypoint = [\"./tmp/main\", 8080]\n// after (.air.toml)\nentrypoint = [\"./tmp/main\", \"8080\"]","handlingStrategy":"validation","validationCode":"// validate .air.toml entrypoint before running air\n// entrypoint array elements must all be quoted strings\n// entrypoint = [\"./tmp/main\", \"8080\"]  ✓\n// entrypoint = [\"./tmp/main\", 8080]    ✗","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Quote every entrypoint array element","Never put bare numbers/booleans in the entrypoint array","Use entrypoint = \"./tmp/main\" string form to avoid array typing pitfalls"],"tags":["config","toml","entrypoint","type-error"],"backgroundTag":"toml-type-mismatch","analyzedSha":"71ea1dee05248122ed22b5870c7fb20a90d80ddd","analyzedAt":"2026-08-31T20:27:54.676Z","schemaVersion":2},"datasetVersion":"2026-09-01T03:17:15.561Z"}