Skip to content

logly/mureo

v0.9.26 Security

This release includes 1 security fix for security teams reviewing exposed deployments.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 1 known CVE

Topics

advertising agentic-ai ai-agents claude-code cli codex
+11 more
cursor facebook-ads gemini-cli google-ads marketing marketing-automation mcp meta-ads model-context-protocol python search-console

Affected surfaces

auth

Summary

AI summary

Fixed ad‑account dropdown truncation by paginating all accounts and added host pinning plus token redaction defenses.

Changes in this release

Security High

Adds host pinning to `paging.next` URLs for Meta ad‑account pagination

Adds host pinning to `paging.next` URLs for Meta ad‑account pagination

Source: llm_adapter@2026-06-09

Confidence: high

Security High

Redacts access token from exception messages during pagination failures

Redacts access token from exception messages during pagination failures

Source: llm_adapter@2026-06-09

Confidence: high

Bugfix Medium

Fixes truncation of Meta ad‑account dropdown at 25 entries

Fixes truncation of Meta ad‑account dropdown at 25 entries

Source: llm_adapter@2026-06-09

Confidence: high

Full changelog

Fixed — mureo configure Meta ad-account dropdown now lists every account under a Business Manager (#181)

The configure UI's Meta ad-account picker silently truncated to the
first 25 accounts under any Business Manager because
list_meta_ad_accounts in mureo/meta_ads/accounts.py called
GET /me/adaccounts once and returned the first page verbatim.
Operators with mid-sized BM portfolios (26+ accounts) could not select
the account they actually wanted to connect — it never appeared in the
dropdown.

This release walks paging.next until exhausted (with limit=100 on
the first request to minimise round-trips) and concatenates every page
in cursor order. A 50-page hard cap stops a buggy Graph response from
spinning the configure UI forever; the cap path logs a warning so the
gap is visible to operators.

Two defence-in-depth additions land alongside the pagination fix:

  • Host pinning on paging.next. Refuse to follow any URL whose
    host is not graph.facebook.com or whose scheme is not https.
    From page 2 onward the access token lives inside the cursor URL
    itself, so a tampered response (broken TLS pinning, proxy mis-route)
    could otherwise exfiltrate it.
  • Token redaction in RuntimeError. Scrub the access token out
    of the wrapped exception message and break the exception chain with
    raise ... from None, so httpx.HTTPStatusError (whose __str__
    embeds the full request URL) cannot leak the token into operator
    logs or UI error surfaces on a mid-walk failure.

No public surface change — list_meta_ad_accounts(access_token) -> list[dict[str, Any]] is unchanged. Operators see the fix
immediately after upgrading to 0.9.26 the next time they run
mureo configure.

Security Fixes

  • Token redaction: access token scrubbed from exception traces; host pinning prevents following non-https://graph.facebook.com paging URLs.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track logly/mureo

Get notified when new releases ship.

Sign up free

About logly/mureo

Framework for AI agents (Claude Code, Cursor, Codex, Gemini) to operate Google Ads, Meta Ads, and Search Console. Grounded in a local STRATEGY.md — not metric-chasing. Defense-in-depth security, local-first. Apache 2.0.

All releases →

Related context

Beta — feedback welcome: [email protected]