# Oh My Pi v17.1.6: pre-model-call budget gate, SiliconFlow providers, Advisor cost visibility

> Adds a pre-model-call gate (`beforeModelCall`) that lets hosts refuse a request before the provider is called (budget, prompt size, handoff). SiliconFlow and SiliconFlow (China) join the built-in API-key login providers with live model discovery. The coding agent adds separate Advisor cost visibility to the status line, makes the task tool's per-spawn effort parameter opt-in, and caps it via `task.maxEffort`. Steering interjections are now wrapped in a `<system-notice>` instead of a nested tag pair. Multiple MCP resource URI resolution gaps are fixed.

| | |
|---|---|
| **Tool** | Oh My Pi |
| **Version** | v17.1.6 |
| **Kind** | release |
| **Published** | 2026-07-27 |
| **Observed** | 2026-08-21 |
| **Significance** | 3/5 |
| **Breaking** | no |
| **Categories** | feature, fix |

## What changed


**@oh-my-pi/pi-agent-core**
- Added `AgentLoopConfig.beforeModelCall` gate: receives the finalized provider context and run abort signal, may return `{ stop: true, reason? }` to end the run before the provider is called
- `Agent.setBeforeModelCall` installs the host callback; `Agent.addBeforeModelCall` registers an additional one without displacing it and returns a disposer
- Input message events (prompt, steering, soft reminders) are now emitted once provider-context preparation succeeds, so a pre-model gate can veto before any turn opens

**@oh-my-pi/pi-ai**
- Added `getProxyForUrl()` for transports needing provider-specific proxy environment resolution with `NO_PROXY` support
- Added SiliconFlow and SiliconFlow (China) to the built-in API-key login provider catalog

**@oh-my-pi/pi-catalog**
- Added SiliconFlow providers (`siliconflow`, `siliconflow-cn`) with dynamic-only OpenAI-compatible model discovery; `SILICONFLOW_API_KEY` / `SILICONFLOW_CN_API_KEY` environment variables wired into `getEnvApiKey`

**@oh-my-pi/pi-coding-agent**
- Added separate Advisor cost visibility to the status line (`$2.67 (sub) + $0.41 (adv)`)
- Made task tool's per-spawn `effort` parameter opt-in through `task.enableEffort` (defaults to false)
- Added `task.maxEffort` to cap the task tool's optional per-spawn effort hint
- Restructured steering/interjection envelope: user text now wrapped in `<system-notice>` + raw message instead of `<user_interjection><message>`
- Fixed disabled higher-priority MCP server no longer disabling a same-named lower-priority one
- Fixed MCP tool-name collision winner flipping when the current owner reconnects
- Fixed MCP resources with custom URI schemes being treated as missing filesystem paths
- Fixed three native MCP resource URI resolution gaps (trailing slash, opaque URIs, failing template list)
- Fixed custom LSP servers sending `languageId: "plaintext"` by honoring optional per-server `languageId` in `lsp.json`
- Fixed interactive extension confirmations ignoring `dialogOptions`


## Sources

- [github_release](https://github.com/can1357/oh-my-pi/releases/tag/v17.1.6) — retrieved 2026-08-21


## Community

_No curated reactions recorded. Facts and community takes are kept in separate layers
and never blended._

---
Canonical: https://changelogs.info/oh-my-pi/v17-1-6
Entity: https://changelogs.info/oh-my-pi
Event ID: `evt_2026-07-27_oh-my-pi_v17-1-6`
Licence: event synthesis © changelogs.info, CC BY 4.0. Linked sources belong to their vendors.
