{"record":{"id":"5694f4b335b1961a","repo":"nektos/act","slug":"cannot-parse-networkmode-s-this-is-an-internal-e","errorCode":null,"errorMessage":"Cannot parse networkmode=%s. This is an internal error and should not happen: '%w'","messagePattern":"Cannot parse networkmode=(.+?)\\. This is an internal error and should not happen: '%w'","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/container/docker_run.go","lineNumber":378,"sourceCode":"\t}\n\n\t// parse configuration from CLI container.options\n\tflags := pflag.NewFlagSet(\"container_flags\", pflag.ContinueOnError)\n\tcopts := addFlags(flags)\n\n\toptionsArgs, err := shellquote.Split(input.Options)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"Cannot split container options: '%s': '%w'\", input.Options, err)\n\t}\n\n\terr = flags.Parse(optionsArgs)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"Cannot parse container options: '%s': '%w'\", input.Options, err)\n\t}\n\n\tif len(copts.netMode.Value()) == 0 {\n\t\tif err = copts.netMode.Set(cr.input.NetworkMode); err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"Cannot parse networkmode=%s. This is an internal error and should not happen: '%w'\", cr.input.NetworkMode, err)\n\t\t}\n\t}\n\n\tcontainerConfig, err := parse(flags, copts, runtime.GOOS)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"Cannot process container options: '%s': '%w'\", input.Options, err)\n\t}\n\n\tlogger.Debugf(\"Custom container.Config from options ==> %+v\", containerConfig.Config)\n\n\terr = mergo.Merge(config, containerConfig.Config, mergo.WithOverride)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"Cannot merge container.Config options: '%s': '%w'\", input.Options, err)\n\t}\n\tlogger.Debugf(\"Merged container.Config ==> %+v\", config)\n\n\tlogger.Debugf(\"Custom container.HostConfig from options ==> %+v\", containerConfig.HostConfig)\n","sourceCodeStart":360,"sourceCodeEnd":396,"githubUrl":"https://github.com/nektos/act/blob/4f411281417e88660bea1c1a1749aa71ae0bd60f/pkg/container/docker_run.go#L360-L396","documentation":"If the user's container options did not set a network mode, act injects its own --network value (cr.input.NetworkMode) into the parsed flag set. copts.netMode.Set failing here means the internal network mode string is invalid for the pflag value type. The message itself says this is an internal error and should not happen for users.","triggerScenarios":"A code path or act version where NewContainerInput.NetworkMode is empty or set to a string the network-mode flag value rejects (e.g. an unsupported value passed programmatically when embedding act as a library).","commonSituations":"Almost never seen by CLI users. Library consumers constructing NewContainerInput by hand with a bad/empty NetworkMode are the realistic audience.","solutions":["If embedding act: set NetworkMode to a valid value, e.g. \"host\" or the default act network name","Update act — internal wiring bugs around network mode have been fixed over time","Report the issue upstream with your act version and options string if it reproduces on the CLI"],"exampleFix":"// Go caller embedding act\ninput := &container.NewContainerInput{\n    NetworkMode: \"host\", // before: \"\" or a typo'd value\n    ...\n}","handlingStrategy":"try-catch","validationCode":"// Go (embedding act): validate NetworkMode before constructing input\nswitch input.NetworkMode {\ncase \"\", \"host\", \"none\", \"bridge\":\ndefault:\n    if !strings.HasPrefix(input.NetworkMode, \"container:\") && !isValidNetworkName(input.NetworkMode) {\n        return fmt.Errorf(\"invalid NetworkMode %q\", input.NetworkMode)\n    }\n}","typeGuard":null,"tryCatchPattern":"// Go: internal invariant — fail fast and report, don't retry\nif err := exec(ctx); err != nil && strings.Contains(err.Error(), \"internal error\") {\n    return fmt.Errorf(\"act internal error, please report: %w\", err)\n}","preventionTips":["Library users: always set NetworkMode explicitly to a known-good value","Pin a tested act version when embedding it"],"tags":["docker","network-mode","internal-error","library-embedding"],"backgroundTag":null,"analyzedSha":"4f411281417e88660bea1c1a1749aa71ae0bd60f","analyzedAt":"2026-08-15T09:19:46.307Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}