Safe-apply policy
The rules that decide which changes apply automatically and which wait for your approval.
Every proposed write is classified safe or review. Safe changes — bounded and low-risk — apply
automatically. Everything else queues in Approvals. The policy is pure and unit-tested, and its context is
built from warehouse values only, so a caller can't smuggle a favorable "current budget" past the caps.
Global gates
Any of these failing forces a change to review, no matter how small:
- The kill switch is off (
orgs.settings.gadsAutoApply, in workspace General settings). - The account isn't
active. - The account already hit 20 auto-applies in the last 24 hours.
What auto-applies
| Change | Bound that keeps it safe |
|---|---|
| Add negative keywords | Always — negatives only block spend. |
| Add keywords | ≤10 keywords, EXACT match only, custom bids ≤1.5× account average CPC. |
| Pause keyword or ad group | Reversible; only stops spend. |
| Raise budget | ≤30%, and only when the campaign's 30-day ROAS is at or above your floor. |
| Cut budget | ≤30%. |
| Adjust a target value | ≤10% in one step, on the current bidding strategy. |
| Revert an auto-applied change | Always allowed. |
| Attach an audience (observation) | No exclusion or bid modifier — serving-neutral. |
What always needs review
Bidding-strategy type switches (they reset the learning period), direct keyword bids, whole-campaign status changes, creating or replacing RSAs and assets, creating or cloning ad groups and campaigns, match-type changes, device / geo / schedule modifiers, account tracking templates, custom audiences, every experiment, every AI Max change, and brand exclusions.
Defense in depth
The apply worker re-runs the policy on auto-approved rows before mutating and demotes anything no longer safe. It also hard-caps every budget change — auto or manual — at 3× the warehouse value. There's no separate worker pause: the kill switch, checked at both propose and apply time, is the single stop.
Auto-apply is a convenience for bounded moves, not autonomy. Turn the kill switch off in workspace General settings to route everything through Approvals.