When enabled, a job marked Require approval to run in its Batch Control property refuses runs that a person started — the build button, /job/<name>/build, /job/<name>/buildWithParameters, the CLI build command and Pipeline Replay — unless an approved run request is being used. A refused person gets an "Approval required" page naming the request screen; a refused unattended trigger is declined quietly, because it has nobody to show a message to.

Automatic triggers are not refused by default, so the jobs that already exist when this switch is turned on keep running to their schedules:

Jobs created after this switch is on are the exception, and it is the thing to plan for. While run control is on, every newly created job starts locked: Require approval to run, Block cron (timer) triggers and Block upstream triggers all on and the allowed-upstream list empty, whoever created it and however. Creating a job does not put it into service; turning a switch off in its configuration is what does, and that change is recorded and, with change control on, needs a permission window. Values supplied when the job was created do not survive — a blockTimer=false or an allowed-upstream list in a config.xml POST, a CLI create-job, a Job DSL seed or a copied job is overwritten, and only the job-level approver list is carried over.

So if your instance generates jobs from scripts, a definition that pins blockTimer: false appears to be ignored on a fresh creation, a generated nightly job does not run its first night, and because an unattended refusal is silent by contract that looks exactly like a cron that never fired. The help on a job's Block cron (timer) triggers lists the three ways to tell the two apart. Read the automation note in docs/LIMITATIONS.md before turning this switch on.

When disabled, Batch Control leaves every run path exactly as Jenkins would handle it.