{"record":{"id":"bdfd15d954e0350e","repo":"hashicorp/vagrant","slug":"false-is-not-a-valid-option-for-the-abort-opti","errorCode":null,"errorMessage":"`false` is not a valid option for the `abort` option for a trigger. This\nwill be ignored...","messagePattern":"`false` is not a valid option for the `abort` option for a trigger\\. This\nwill be ignored\\.\\.\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"plugins/kernel_v2/config/vm_trigger.rb","lineNumber":279,"sourceCode":"          errors << I18n.t(\"vagrant.config.triggers.warn_bad_type\", cmd: @command)\n        end\n\n        if @on_error != :halt\n          if @on_error != :continue\n            errors << I18n.t(\"vagrant.config.triggers.on_error_bad_type\", cmd: @command)\n          end\n        end\n\n        if @exit_codes\n          if !@exit_codes.all? {|i| i.is_a?(Integer)}\n            errors << I18n.t(\"vagrant.config.triggers.exit_codes_bad_type\", cmd: @command)\n          end\n        end\n\n        if @abort && !@abort.is_a?(Integer)\n          errors << I18n.t(\"vagrant.config.triggers.abort_bad_type\", cmd: @command)\n        elsif @abort == false\n          machine.ui.warn(I18n.t(\"vagrant.config.triggers.abort_false_type\"))\n        end\n\n        if @ruby_block && !ruby_block.is_a?(Proc)\n          errors << I18n.t(\"vagrant.config.triggers.ruby_bad_type\", cmd: @command)\n        end\n\n        errors\n      end\n\n      # The String representation of this Trigger.\n      #\n      # @return [String]\n      def to_s\n        \"trigger config\"\n      end\n    end\n  end\nend","sourceCodeStart":261,"sourceCodeEnd":297,"githubUrl":"https://github.com/hashicorp/vagrant/blob/35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5/plugins/kernel_v2/config/vm_trigger.rb#L261-L297","documentation":"A trigger's `abort` expects an Integer process exit code. Validation has three paths: an Integer passes; any other truthy non-Integer (e.g. true) is a hard validation error (abort_bad_type); exactly `false` draws this warning and is ignored — false is not a valid way to express \"do not abort\".","triggerScenarios":"A trigger block containing `t.abort = false`, typically written by analogy with boolean trigger options; omission is the only way to not abort.","commonSituations":"Applying boolean-style config habits from other trigger options; attempting to explicitly disable abort behavior.","solutions":["Delete the `t.abort = false` line — omitting abort entirely is the correct way to not abort","Use an Integer to abort with a specific exit code, e.g. `t.abort = 1`","Note that `t.abort = true` is worse: it is a validation error, since true is not an Integer"],"exampleFix":"# before\nconfig.trigger.after :up do |t|\n  t.abort = false\nend\n# after\nconfig.trigger.after :up do |t|\n  # (abort omitted entirely)\nend","handlingStrategy":"validation","validationCode":"# Lint trigger abort values: Integer or omitted\nraise \"abort must be an Integer exit code\" unless trigger_abort.nil? || trigger_abort.is_a?(Integer)","typeGuard":"valid_abort = ->(v) { v.nil? || v.is_a?(Integer) }","tryCatchPattern":null,"preventionTips":["Omit abort entirely to not abort; there is no false value","Never write `t.abort = true` — it is a hard validation error, not a warning","Use ruby_block conditions to decide dynamically whether to abort"],"tags":["vagrant","triggers","abort","invalid-value"],"backgroundTag":"invalid-boolean-option-value","analyzedSha":"35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5","analyzedAt":"2026-08-21T13:34:32.514Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}