v0.10.24
Security
- Meta
account_id/ Google Adscustomer_idare scoped to the active workspace on multi-account backends (#411). These free caller arguments were used with operator-shared credentials without validation, so on an agency backend one client's conversation could read — or with write tools mutate — a sibling client's account by passing its id. New allow-list resolvers enforce the effective id (argument and credentials default alike) before any client is built, fail closed when a multi-account backend declares nothing, and filtergoogle_ads_accounts_list. Standalone installs unaffected. - Budget guardrails can no longer be bypassed with non-finite or oversized values (#419). A
NaN(reachable over the wire) made every cap comparison abstain, and an oversized integer raised anOverflowErrorthe gate swallowed into an allow. Both now fail closed across the built-in scan, the total/increase caps, and the plugin declaration path.
Added
- Creative Studio gallery (#409) — a read-only dashboard tab browsing generated visuals and composed banners per run, browsable per client on multi-account backends, with strict path containment on image serving.
- Plugin budget-key declarations (#414) — a plugin declares its budget argument keys in MCP metadata so the one built-in
StrategyPolicyGateenforces STRATEGY.md Guardrails on its platform, no per-plugin gate.
Fixed
- Configure UI credential status/writes no longer race the credentials path (#406) —
set_hostnow publishes the fully resolvedHostPathsin a single atomic assignment, fixing saved credentials showing as unset after a reload.
Docs
- Japanese trigger phrases on operational skill descriptions (#396);
docs/plugin-authoring.mdrefreshed for #324/#327 and the new budget seam (#414);SECURITY.mdrotation/backup note (#394).
Existing installs: run mureo upgrade (or the configure UI's Reinstall button) if you have not since 0.10.23, to refresh the credential-guard hooks.
Full Changelog: v0.10.23...v0.10.24