Ran a safe manual dry test of the Google Ads negative keyword automation on 2026-04-29 at 21:52 Eastern.
The automation configuration is active and intact, and the required local Python dependencies are available. No live Google Ads reads or writes were performed because the write-capable access lanes remain blocked.
The direct Google Ads API lane still fails with invalid_grant: Token has been expired or revoked. The approved Google Sheet tracker URL is present in the automation prompt, but local service-account access to that spreadsheet returned HTTP 403 permission denied. The local tracker CSVs were updated with this manual test, and a no-op rollback record was created.
Manual report: C:\Users\SAguiar\Documents\Codex\google-ads-negative-keyword-automation\2026-04-29\2152\manual-test-report.md
No-op rollback file: C:\Users\SAguiar\Documents\Codex\google-ads-negative-keyword-automation\2026-04-29\2152\rollback_noop.json
Tracker CSVs: C:\Users\SAguiar\Documents\Codex\google-ads-negative-keyword-automation\tracker\
Repair one Ads write lane before expecting live negative keyword application: regenerate the OAuth refresh token, connect a Google Ads/Pipedream MCP lane in the Codex cloud/worktree runner, or authenticate the local Google Ads MCP with an Ads-linked user.