# Reported issues for mu

Pod holds 17 of 22 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [mu](/mcp/mu).

## Most discussed

### Security review #4

Standing audit of the agent tool / auth / wallet surface against the invariants in internal/docs/SECURITY.md. Goal: no path where the model can decide whose data is used or how the user's funds are spent.

[Read the thread](https://github.com/micro/mu/issues/1230) · 2026-07-07 · closed · 5 comments

### Fix guest search UI escaping and input rendering

Goal: make the guest Search service page feel reliable as part of Mu's first-run service surface.\n\nScope:\n- Fix the client-side search escaping/rendering so recent searches and typed queries preserve spaces instead of rendering them as greater-than entities.\n- Keep public routes, REST/MCP contracts, and provider behavior unchanged.\n- Preserve the existing guest search flow and graceful empty/provider states.\n\nAcceptance criteria:\n- A guest visiting /search can enter a multi-word query an

[Read the thread](https://github.com/micro/mu/issues/861) · 2026-06-30 · closed · 1 comment

### /mcp reads the whole request body into memory with no limit, before auth or payment

## The problem

`isToolsList` in `internal/api/mcp_micro.go:208` runs on **every** `/mcp` request:

```go
body, err := io.ReadAll(r.Body)
r.Body = io.NopCloser(bytes.NewReader(body))
```

No `MaxBytesReader`, no `LimitReader`. One request declaring a large body allocates that much server memory, and it happens **before** the auth challenge, before the x402 payment gate, before anything decides whether the caller is allowed to be here at all. `/mcp` is the agent door and is deliberately reachable

[Read the thread](https://github.com/micro/mu/issues/1463) · 2026-08-24 · closed · 0 comments

### Derive MCP tools from the service registry, carrying each tool's cost

Prerequisite for `micro/xyz` building blocks.

## The problem

Registering a service gets you an agent tool, the `/agent/new` picker entry, the app SDK catalogue entry and a status check — all derived from `service.Services()`. It does **not** get you an MCP tool.

`mcpResolver()` builds from the *tool* registry, and those tools are hand-written:

```
tool structs in internal/api/mcp.go:              73
tool structs in main.go:                           8
anything deriving a tool from service.Se

[Read the thread](https://github.com/micro/mu/issues/1445) · 2026-08-01 · closed · 0 comments

### Keep generic finance policy out of AI-news leads

Goal: Preserve the fast, readable guest AI-news path while preventing generic finance or policy stories from leading a request for today's AI news unless the story has concrete AI action, AI product/model behavior, AI agent/tool impact, or explicit AI governance substance.

Scope: Refine the existing news ranking/filtering used by the agent for AI-news prompts. Do not add new surfaces or change public contracts.

Acceptance criteria:
- A guest `/agent` prompt like `Find today's AI news` prioriti

[Read the thread](https://github.com/micro/mu/issues/1391) · 2026-07-10 · closed · 0 comments

### Ensure deployed AI-news answers don't stream stale items first after PR 1297

Goal: keep the live guest ask → answer loop truthful for same-day AI-news prompts after PR #1297 by ensuring the deployed /agent news_search answer starts with the freshest dated evidence or a clear stale-results caveat.

Scope: the web /agent streaming and final synthesis paths for prompts such as `Find today's AI news` when news_search returns mixed dated evidence. Avoid public-contract changes.

Acceptance criteria:
- A CI-verifiable regression covers the native/deployed-style streaming path 

[Read the thread](https://github.com/micro/mu/issues/1299) · 2026-07-08 · closed · 0 comments

### Keep deployed AI-news answers from leading with stale dotted-tool results

Goal: make the live guest ask → answer loop for same-day AI-news prompts lead with current evidence or an explicit freshness caveat instead of stale results.\n\nScope: the deployed/native news_search and any dotted-tool/native-streaming paths used by /agent for prompts such as "Find today's AI news". This is a refinement of the existing core loop; do not change public MCP/A2A/REST contracts.\n\nAcceptance criteria:\n- Add CI-verifiable coverage reproducing a same-day AI-news prompt whose availab

[Read the thread](https://github.com/micro/mu/issues/1270) · 2026-07-08 · closed · 0 comments

### Resolve DNS before web_fetch connects to prevent SSRF to internal IPs

Invariant broken: tool content and model-supplied public parameters must not let an attacker reach internal resources from the server. web_fetch/search URL validation blocks literal private hosts, but it does not resolve DNS and validate the connect IP before the HTTP client dials.\n\nFile: search/fetch.go:653-674\n\nExploit scenario: an attacker places prompt-injection text in a webpage/email telling the agent to call web_fetch on https://attacker-controlled.example/latest. That hostname resolv

[Read the thread](https://github.com/micro/mu/issues/1189) · 2026-07-06 · closed · 0 comments

## Most recent

### Disclose stale-only news results before today story lists

Goal: When a guest asks for today/latest AI news and news_search only has older items, the agent answer must not present March-May archive stories as today's news.\n\nScope: Keep the fast news_search provider path and clean source URLs. Improve ranking/framing so same-day or recent evidence wins when present; if the result set is stale-only, put an explicit no-current-results/stale-only disclosure before the list and label older stories as background.\n\nAcceptance criteria:\n- A prompt like `Fi

[Read the thread](https://github.com/micro/mu/issues/1187) · 2026-07-06 · closed · 0 comments

### Surface freshness caveats in AI-news agent answers

Goal: make the live guest agent answer for prompts like "Find today's AI news" carry the freshness caveat that news_search now provides, instead of presenting stale provider results as today's news.

Scope: preserve the fast news_search path and current clean source links, but ensure synthesis/rendering includes an upfront request-date/freshness disclosure when returned AI-news items are older than the requested today/latest window.

Acceptance criteria:
- A guest/web agent prompt "Find today's 

[Read the thread](https://github.com/micro/mu/issues/1177) · 2026-07-05 · closed · 0 comments

### Require sessions before invoking MCP auth handlers

Invariant broken: RegisterToolWithAuth handlers received an empty accountID for unauthenticated MCP calls instead of being rejected before handler invocation. File/line: internal/api/mcp.go:632-641. Exploit scenario: prompt-injected tool content tells a guest MCP client to call an auth-bound unmetered tool such as apps_fork; before this hardening, the handler could run with accountID="", creating or testing resources under an unbound/empty owner instead of a server-bound authenticated session. F

[Read the thread](https://github.com/micro/mu/issues/1079) · 2026-07-04 · closed · 0 comments

### Use successful weather tool results in agent answers

Goal: make guest weather-backed agent answers use successful live weather_forecast output instead of reporting the tool as unavailable when provider data is present.

Scope:
- Keep existing /agent, MCP/A2A/REST, webhook, and env contracts unchanged.
- Preserve the fast explicit unavailable-provider fallback when weather_forecast truly fails.
- Ensure weather prompts such as "Weather in New York today" render a concise location/date-specific answer from the forecast rows with source and generated

[Read the thread](https://github.com/micro/mu/issues/997) · 2026-07-02 · closed · 0 comments

### Reduce AI-news fallback answer synthesis latency

Goal: Make the guest core loop for current/topic news prompts feel fast after the news provider is unavailable and Mu falls back to web search.\n\nScope: Keep existing /agent, MCP/A2A/REST, webhook, and env contracts unchanged. Focus on the current fallback path for prompts such as "Find today's AI news": after web results are available, stream a concise, source-linked answer quickly rather than waiting several seconds for synthesis. Preserve topic specificity, source links, request-date anchori

[Read the thread](https://github.com/micro/mu/issues/987) · 2026-07-02 · closed · 0 comments

### Reduce weather-backed agent answer completion latency

Goal: keep simple weather-backed prompts feeling fast end to end, not just fast to first event.

Scope:
- Focus on the existing web /agent weather path and shared synthesis/streaming code as needed.
- Preserve public contracts for /agent, MCP, A2A, REST, webhook, and env names.
- Do not add new product surface area.

Acceptance criteria:
- A guest prompt such as "Weather in New York today" still emits early progress/tool status promptly.
- The final concise weather answer completes quickly inste

[Read the thread](https://github.com/micro/mu/issues/974) · 2026-07-02 · closed · 0 comments

### Keep unavailable news fallbacks topic-specific

Goal: when dedicated news_search is unavailable, guest /agent prompts for current topics such as "Find today's AI news" should fall back to web/search context that preserves the user's specific topic instead of broad technology-news filler.\n\nScope: guest /agent synthesis and search-query construction for current/news prompts when news_search returns unavailable. Do not change public /agent, MCP, A2A, REST, webhook, or provider env contracts.\n\nAcceptance criteria:\n- Add CI-verifiable coverag

[Read the thread](https://github.com/micro/mu/issues/964) · 2026-07-01 · closed · 0 comments

### Reduce first-token latency for guest agent answers

Goal: make the core ask → answer loop feel fast for first-run guests without changing public API/MCP/A2A contracts.\n\nScope: guest /agent prompts that use existing news, markets, and weather tools. The 2026-07-01 live review saw market and technology-news answers stream only after roughly 20-22s, even though the final answers were readable and tool calls were no longer duplicated.\n\nAcceptance criteria:\n- Add CI-verifiable coverage or instrumentation around agent streaming latency/progress be

[Read the thread](https://github.com/micro/mu/issues/951) · 2026-07-01 · closed · 0 comments

### Synthesize mixed-source agent answers instead of raw tool payloads

Goal: Make guest and signed-in agent answers readable when a prompt fans out across multiple services and some providers are unavailable.\n\nScope:\n- Preserve existing /agent and service contracts.\n- For prompts like "Find today AI news", synthesize usable blog/social/search/news context into a human answer instead of rendering raw JSON/text payloads from tools.\n- Keep explicit unavailable-provider disclosure, but do not let an unavailable provider prevent synthesis from supported sources.\n-

[Read the thread](https://github.com/micro/mu/issues/915) · 2026-07-01 · closed · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/micro/mu/issues).
