{"record":{"id":"5537cd9be2a7527d","repo":"puppetlabs/puppet","slug":"unknown-action-action","errorCode":null,"errorMessage":"Unknown action '%{action}'","messagePattern":"Unknown action '%(.+?)'","errorType":"validation","errorClass":"Puppet::Error","httpStatus":null,"severity":"error","filePath":"lib/puppet/application/ssl.rb","lineNumber":171,"sourceCode":"          Extra arguments detected: %{args}\n          Did you mean to run:\n            puppetserver ca clean --certname <name>\n          Or:\n            puppet ssl clean --target <name>\n        END\n      end\n\n      clean(certname)\n    when 'bootstrap'\n      unless Puppet::Util::Log.sendlevel?(:info)\n        Puppet::Util::Log.level = :info\n      end\n      @machine.ensure_client_certificate\n      Puppet.notice(_(\"Completed SSL initialization\"))\n    when 'show'\n      show(certname)\n    else\n      raise Puppet::Error, _(\"Unknown action '%{action}'\") % { action: action }\n    end\n  end\n\n  def show(certname)\n    password = @cert_provider.load_private_key_password\n    ssl_context = @ssl_provider.load_context(certname: certname, password: password)\n    puts ssl_context.client_cert.to_text\n  end\n\n  def submit_request(ssl_context)\n    key = @cert_provider.load_private_key(Puppet[:certname])\n    unless key\n      key = create_key(Puppet[:certname])\n      @cert_provider.save_private_key(Puppet[:certname], key)\n    end\n\n    csr = @cert_provider.create_request(Puppet[:certname], key)\n    route = create_route(ssl_context)","sourceCodeStart":153,"sourceCodeEnd":189,"githubUrl":"https://github.com/puppetlabs/puppet/blob/e227c27540975c25aa22d533a52424a9d2fc886a/lib/puppet/application/ssl.rb#L153-L189","documentation":"Raised from the `else` branch of the action dispatch in `Puppet::Application::SSL#main`: the first positional argument matched none of the supported actions. The recognized actions are submit_certificate_request, generate_request, verify, clean, bootstrap, and show. It is a pure usage error raised before any SSL work starts, so no files or requests are touched when it fires.","triggerScenarios":"Invoking `puppet ssl <verb>` with an unsupported verb: `puppet ssl submit` (the real action is submit_certificate_request), `puppet ssl request`, `puppet ssl bootstrap-cert`, or any typo; also automation assuming an action name from an older Puppet version.","commonSituations":"Runbooks written for Puppet 5 before `puppet ssl` gained these actions; abbreviating action names; shell completion or internal docs out of date after an upgrade.","solutions":["Run `puppet ssl --help` and use one of: submit_certificate_request, generate_request, verify, clean, bootstrap, show","For full initial certificate setup use `puppet ssl bootstrap`","Check for stray quoting or a shifted first positional token in scripts"],"exampleFix":"# before\npuppet ssl request\n# after\npuppet ssl submit_certificate_request\n# or the usual one-shot:\npuppet ssl bootstrap","handlingStrategy":"validation","validationCode":"SSL_ACTIONS = %w[submit_certificate_request generate_request verify clean bootstrap show].freeze\nunless SSL_ACTIONS.include?(ARGV[0])\n  abort \"unknown action '#{ARGV[0]}'; valid: #{SSL_ACTIONS.join(', ')}\"\nend","typeGuard":"def ssl_action?(name)\n  %w[submit_certificate_request generate_request verify clean bootstrap show].include?(name)\nend","tryCatchPattern":null,"preventionTips":["Pin the exact action strings in automation instead of interpolating user input","Keep runbooks aligned with `puppet ssl --help` after upgrades","Default to `puppet ssl bootstrap` for cert lifecycle one-shots"],"tags":["puppet-ssl","cli","unknown-action","dispatch"],"backgroundTag":"unknown-cli-action","analyzedSha":"e227c27540975c25aa22d533a52424a9d2fc886a","analyzedAt":"2026-08-21T20:49:46.650Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}