{"record":{"id":"1370fc3db0ee1564","repo":"nektos/act","slug":"expected-format-org-repo-path-ref-actual","errorCode":null,"errorMessage":"Expected format {org}/{repo}[/path]@ref. Actual '%s' Input string was not in a correct format","messagePattern":"Expected format (.+?)/(.+?)\\[/path\\]@ref\\. Actual '(.+?)' Input string was not in a correct format","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/runner/step_action_remote.go","lineNumber":49,"sourceCode":"\tremoteAction        *remoteAction\n\tcacheDir            string\n\tresolvedSha         string\n}\n\nvar (\n\tstepActionRemoteNewCloneExecutor = git.NewGitCloneExecutor\n)\n\nfunc (sar *stepActionRemote) prepareActionExecutor() common.Executor {\n\treturn func(ctx context.Context) error {\n\t\tif sar.remoteAction != nil && sar.action != nil {\n\t\t\t// we are already good to run\n\t\t\treturn nil\n\t\t}\n\n\t\tsar.remoteAction = newRemoteAction(sar.Step.Uses)\n\t\tif sar.remoteAction == nil {\n\t\t\treturn fmt.Errorf(\"Expected format {org}/{repo}[/path]@ref. Actual '%s' Input string was not in a correct format\", sar.Step.Uses)\n\t\t}\n\n\t\tgithub := sar.getGithubContext(ctx)\n\t\tsar.remoteAction.URL = github.ServerURL\n\n\t\tif sar.remoteAction.IsCheckout() && isLocalCheckout(github, sar.Step) && !sar.RunContext.Config.NoSkipCheckout {\n\t\t\tcommon.Logger(ctx).Debugf(\"Skipping local actions/checkout because workdir was already copied\")\n\t\t\treturn nil\n\t\t}\n\n\t\tfor _, action := range sar.RunContext.Config.ReplaceGheActionWithGithubCom {\n\t\t\tif strings.EqualFold(fmt.Sprintf(\"%s/%s\", sar.remoteAction.Org, sar.remoteAction.Repo), action) {\n\t\t\t\tsar.remoteAction.URL = \"https://github.com\"\n\t\t\t\tgithub.Token = sar.RunContext.Config.ReplaceGheActionTokenWithGithubCom\n\t\t\t}\n\t\t}\n\t\tif sar.RunContext.Config.ActionCache != nil {\n\t\t\tcache := sar.RunContext.Config.ActionCache","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/nektos/act/blob/4f411281417e88660bea1c1a1749aa71ae0bd60f/pkg/runner/step_action_remote.go#L31-L67","documentation":"The `uses:` string of a remote-action step does not match {org}/{repo}[/path]@ref. newRemoteAction applies the regex '^([^/@]+)/([^/@]+)(/([^@]*))?(@(.*))?$' and returns nil when there is no match or the ref after '@' is empty — prepareActionExecutor then throws this error.","triggerScenarios":"`uses:` missing the @ref entirely ('actions/checkout'), containing more than two slash-separated leading segments with @ in wrong place, a ref of only '@', empty string, or '@' with nothing after it; also 'docker://' style uses routed to the remote step incorrectly.","commonSituations":"Forgetting '@v4' on an action reference; typos like 'actions/checkout@' or 'actions@@v4'; using './local' without the './' prefix so it is treated as remote; YAML stripping a value; unquoted `uses:` where an @ or special char confuses the parser.","solutions":["Add the required ref: 'actions/checkout@v4' or a full commit SHA.","Ensure the format is org/repo[/subpath]@ref with exactly one '@' and a non-empty ref.","Quote the uses value in YAML to avoid parser surprises.","For local actions keep the './' prefix; for containers use the 'docker://' prefix."],"exampleFix":"# before\n- uses: actions/checkout\n# after\n- uses: actions/checkout@v4","handlingStrategy":"validation","validationCode":"package main\nimport (\n  \"fmt\"\n  \"regexp\"\n)\nvar usesRe = regexp.MustCompile(`^([^/@]+)/([^/@]+)(/([^@]*))?@(.+)$`)\nfunc validUses(s string) bool { return usesRe.MatchString(s) }","typeGuard":"func validUses(s string) bool {\n  ok, _ := regexp.MatchString(`^([^/@]+)/([^/@]+)(/([^@]*))?@(.+)$`, s)\n  return ok\n}","tryCatchPattern":null,"preventionTips":["Every remote uses must carry @ref (tag, branch, or full SHA).","Quote uses values in YAML.","actionlint flags missing refs before runtime."],"tags":["uses","workflow-syntax","remote-action","validation"],"backgroundTag":null,"analyzedSha":"4f411281417e88660bea1c1a1749aa71ae0bd60f","analyzedAt":"2026-08-15T09:19:46.307Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}