Skip to content

logly/mureo

v0.9.25 Feature

This release adds 2 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

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

deps breaking_upgrade

Summary

AI summary

Added mureo upgrade [--all] to refresh mureo and its plugins in a pipx‑aware virtual environment.

Changes in this release

Security Medium

Validates package specs against PEP 503 regex to prevent argument injection.

Validates package specs against PEP 503 regex to prevent argument injection.

Source: granite4.1:30b@2026-06-06-audit

Confidence: low

Security Medium

Ensures same‑venv guarantee by using `sys.executable` for all pip/ensurepip invocations.

Ensures same‑venv guarantee by using `sys.executable` for all pip/ensurepip invocations.

Source: granite4.1:30b@2026-06-06-audit

Confidence: low

Feature Medium

Adds `mureo upgrade` subcommand for venv‑aware package upgrades.

Adds `mureo upgrade` subcommand for venv‑aware package upgrades.

Source: llm_adapter@2026-06-06

Confidence: high

Feature Low

Implements `--all` flag to upgrade mureo and all installed `mureo-*` packages in one pip call.

Implements `--all` flag to upgrade mureo and all installed `mureo-*` packages in one pip call.

Source: granite4.1:30b@2026-06-06-audit

Confidence: low

Feature Low

Provides `--dry-run` option to print the pip command without executing it.

Provides `--dry-run` option to print the pip command without executing it.

Source: granite4.1:30b@2026-06-06-audit

Confidence: low

Feature Low

Adds targeted `ensurepip` fallback when pip is missing, with clear diagnostics for failures.

Adds targeted `ensurepip` fallback when pip is missing, with clear diagnostics for failures.

Source: granite4.1:30b@2026-06-06-audit

Confidence: low

Performance Low

Performs atomic resolution under `--all` by issuing a single `pip install --upgrade` invocation.

Performs atomic resolution under `--all` by issuing a single `pip install --upgrade` invocation.

Source: granite4.1:30b@2026-06-06-audit

Confidence: low

Full changelog

Added — mureo upgrade [--all] for pipx venv-aware plugin upgrades (#177, #178)

Operators installing mureo via pipx install mureo and extending it with
third-party packages (via mureo.providers / mureo.policy_gates /
mureo.web_extensions entry-point groups, typically registered through
pipx inject or pip install into the same venv) hit a UX gap: there
was no single command for keeping the whole stack fresh.

  • pipx upgrade mureo only upgrades the primary venv package; injected
    plugins are silently left behind.
  • pipx upgrade <plugin> fails because plugins do not have a same-named
    venv (pipx expects ~/.local/pipx/venvs/<plugin>/).
  • pipx inject mureo <pkg> --force triggers a known pipx 1.11
    "looks like a path" bug whenever cwd contains a mureo directory,
    so operators cannot reliably use it as an upgrade path.

mureo upgrade closes this gap with a single top-level subcommand that
operates on sys.executable — the venv currently running the CLI —
independent of cwd, PATH, and PYTHONPATH.

Usage

mureo upgrade                    # upgrade mureo itself
mureo upgrade <pkg>              # upgrade a same-venv package
mureo upgrade <pkg>==<version>   # version-pinned upgrade
mureo upgrade --all              # mureo + every installed mureo-* in one pip call
mureo upgrade --dry-run          # print the pip command without invoking it

Safety properties

  • Argument-injection guard. Package specs are validated against a
    PEP 503 regex (optionally followed by a single ==<version> pin) and
    pip is always invoked with a -- sentinel. Hostile inputs such as
    -r/etc/passwd, --index-url=http://attacker/, pkg @ git+https://…,
    PEP 508 markers, and extras are rejected at the boundary; pip's
    option parser never sees them.
  • Squatter-resistant discovery. --all walks
    importlib.metadata.distributions(), normalises every name per
    PEP 503, and accepts only mureo exact match or mureo-<rest>.
    Prefix squatters like mureology or mureoextras are excluded by
    construction.
  • Same-venv guarantee. Every pip / ensurepip invocation uses
    sys.executable, so the command can never accidentally upgrade a
    globally-installed mureo or a sibling venv.
  • Targeted ensurepip fallback. Only the literal
    No module named pip failure of python -m pip --version triggers
    an ensurepip --upgrade bootstrap; every other failure is surfaced
    verbatim so permission / network / disk errors are never silently
    bypassed. After a successful bootstrap, pip availability is
    re-probed to produce a clear diagnostic for half-broken venvs.
  • Atomic resolution under --all. A single pip install --upgrade
    invocation is issued with every target so pip's resolver sees the
    full set together.
  • Exit-code transparency. pip's exit code is propagated as the CLI
    exit code, enabling automation scripts to retry or branch.

Why ship this in OSS rather than per-plugin

Each plugin author could in principle ship its own <plugin> upgrade
command, but that path produces duplicated code per plugin and forces
operators to remember a different command for each one. Centralising
the logic in OSS — which already owns mureo install-desktop and
mureo configure, both also venv-aware top-level commands — keeps the
mental model simple: mureo upgrade --all is the only command an
operator needs.

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]