Skip to content

fix(media-buyer): close the last no-approval execution loophole - #11

Merged
obvious-autobuild[bot] merged 1 commit into
mainfrom
fix/universal-approval-gating
Aug 27, 2026
Merged

obvious-autobuild[bot] merged 1 commit into
mainfrom
fix/universal-approval-gating

Conversation

@obvious-autobuild

Copy link
Copy Markdown
Contributor

Why

PR #8 restored universal approval gating in scripts/session-context.sh, output-styles/synter.md, and context/brand-and-safety.md — but flagged one adjacent finding it deliberately left out of scope: agents/media-buyer.md's "Direct Single-Turn Execution Mode" hard rule still told the media-buyer agent to run the entire spend pipeline (create_campaign_plan → upsert_plan_entity → execute_campaign_plan → enable_campaign) in one turn "without pausing for multi-turn confirmations or approvals." That's a direct contradiction of the locked decision — universal approval gating, every tier, no exceptions — for the one agent that actually spends money.

What

  • agents/media-buyer.md — replaced the "Direct Single-Turn Execution Mode" bullet with recommend-then-execute language consistent with scripts/session-context.sh: propose the plan (platform, budget, audience, creative), show it, wait for an explicit yes before any create/enable/budget/launch/pause call. Reads stay free. The "Created ≠ live and spending" and conservative-budget bullets are untouched.
  • Swept agents/*.md and context/*.md for any other single-turn/no-approval execution language — media-buyer.md was the only remaining instance.

How to Review

Single-bullet diff in agents/media-buyer.md. Verify the grep sweep below shows no remaining no-approval execution language anywhere in the repo.

Test Evidence

$ grep -rniE "single.turn|without pausing|without stopping|without approval|without confirmation|no approval|skip.*confirmation|end-to-end immediately|direct execution|gating is removed|gating is only" agents/*.md context/*.md output-styles/*.md scripts/*.md
context/brand-and-safety.md:35:- Nothing that spends money ships without explicit user approval. No exceptions, no tier carve-outs.
# ^ that's the correct universal rule from #8, not a violation

$ grep -rin 'solo|scale|gating|single-turn' . --exclude-dir=.git
# remaining hits are all legitimate: campaign "scale" terminology (kill-scale-rules, budget-optimizer, optimize skills)
# and "age-gating" in ad-policy-compliance — no file asserts tier-conditional or no-approval execution

$ bash -n scripts/session-context.sh
# exits 0, no output

Human author: Joel Horwitz (joel@synterai.com)

🔗 Obvious Project · 🧵 Obvious Thread

…mmend-then-execute

The media-buyer agent's hard rules told it to run the entire spend
pipeline (create_campaign_plan -> upsert_plan_entity ->
execute_campaign_plan -> enable_campaign) in a single turn without
pausing for approval — contradicting the universal approval gate
restored in #8. Now it proposes the plan and waits for an explicit
yes before any create/enable/budget/launch/pause call, matching
scripts/session-context.sh. Reads stay free; the Created != live and
conservative-budget bullets are untouched.

Swept agents/*.md and context/*.md for other single-turn/no-approval
execution language — media-buyer.md was the only remaining instance.

Co-authored-by: Joel Horwitz <joel@synterai.com>
@obvious-autobuild
obvious-autobuild Bot marked this pull request as ready for review August 27, 2026 21:05
@obvious-autobuild
obvious-autobuild Bot merged commit db7f655 into main Aug 27, 2026
3 checks passed
@obvious-autobuild
obvious-autobuild Bot deleted the fix/universal-approval-gating branch August 27, 2026 21:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants