openSUSE-SU-2026:22111-1

See a problem?
Import Source
https://ftp.suse.com/pub/projects/security/osv/openSUSE-SU-2026:22111-1.json
JSON Data
https://api.osv.dev/v1/vulns/openSUSE-SU-2026:22111-1
Upstream
CVE (11)
Related
Published
2026-10-09T15:27:19Z
Modified
2026-10-19T17:23:14Z
Summary
Security update for pi-coding-agent
Details

This update for pi-coding-agent fixes the following issues:

Changes in pi-coding-agent:

  • Update to version 1.0.4 (1.0.3 was superseded the same day and never submitted):

    • BREAKING: provider azure-openai-responses renamed to azure, now also serving Azure Foundry Chat Completions (azure/deepseek-v4-pro first). Rename the provider key in auth.json (or run /login again), models.json and settings.json (defaultProvider, enabledModels and modelThinkingLevels); sessions on the old provider fall back and lose prompt cache. AZURE_OPENAI_* env vars unchanged
    • --tools and --exclude-tools take *-patterns and --no-mcp disables MCP for one run; --tools keeps MCP tools unless an entry starts with mcp__
    • Codemode read() on image files yields an image block image() shows, and image() also saves each image to a temp file for later turns
    • Fix fenced-code highlighting past the first line, MCP OAuth native-client registration, MCP shutdown racing a connecting server, Bedrock stalled-stream retries and frozen codemode built-ins, plus ChatGPT-login, EIO-on-closed-terminal and output-file-permission fixes
    • Many more fixes and improvements; see upstream's release notes for the full list
  • Refresh the vendored node_modules 1.0.2 -> 1.0.4: the ten @earendil-works packages move to 1.0.4; nanoid, postcss and vite move too but are dev-only and not shipped. Still 119 shipped modules and the licence union is unchanged

    • CVE-2026-102276 (boo#1283188): brace-expansion is 5.0.12, above the 5.0.10 fix floor, so the package is not affected by it
    • CVE-2026-102277 (boo#1283392) and CVE-2026-102278 (boo#1283412): brace-expansion is 5.0.12, at the 5.0.12 and above the 5.0.11 fix floors, so the package is not affected by them
  • Update to version 1.0.2: patch releases on the 1.0 API, with no breaking changes

    • models.json takes samplingParamsByThinkingLevel next to the existing samplingParams, so an OpenAI-compatible model can set temperature, top_p and the like separately for off, minimal, low, medium, high, xhigh and max. Model defaults, the effective level's override and the request are merged per key, modelOverrides merges per level, and the levels are pi's own, not the provider's thinkingLevelMap values. Only openai-completions, openai-responses and azure-openai-responses apply them
    • MCP servers can be enabled, disabled or re-scoped per project from a .pi/mcp.json entry without a command or url, and /mcp toggles a user-level server for the current project
    • oauth.clientRegistration: "cimd" identifies pi by its Client ID Metadata Document instead of dynamic client registration
    • pi.registerToolRenderer() picks how calls to a tool that is not registered yet are drawn, such as MCP tools in a resumed session
    • Cloudflare's Clef and Clef Flash classifier models are usable from codemode scripts and extensions
    • A codemode script printing in a loop now fails at 16 Mi characters or 100000 items instead of running pi out of memory
    • MCP tool calls in resumed sessions and HTML exports no longer render fully expanded until their server connects
    • JPEG, GIF and WebP images that extensions draw through Image now appear in Kitty, Ghostty, WezTerm and Warp, and fullscreen Kitty images no longer collapse to a one-row strip after scrolling in WezTerm
    • Many more fixes and improvements; see upstream's release notes for the full list
  • Refresh the vendored node_modules over 1.0.0 -> 1.0.2: the ten @earendil-works packages move to 1.0.2, with pi-telemetry the one that was already at 1.0.2 in the 1.0.1 tree, plus @anthropic-ai/sdk to 0.129.0. No module leaves or joins the 119 shipped ones and the licence union is unchanged

    • CVE-2026-102276 (boo#1283188): brace-expansion is 5.0.12, above the 5.0.10 fix floor, so the package is not affected by it. Upstream's 1.0.1 made it a direct dependency, but this package vendored 5.0.12 already at 1.0.0
    • CVE-2026-102277 (boo#1283392) and CVE-2026-102278 (boo#1283412): brace-expansion is 5.0.12, at the 5.0.12 and above the 5.0.11 fix floors, so the package is not affected by them
  • Fix the %prep comment on Source10: upstream ships no shrinkwrap since 1.0.1

  • Update to version 1.0.0. This is a major release with breaking behaviour changes, not a patch release:

    • BREAKING: the interactive TUI runs fullscreen by default now, so the terminal's normal scrollback is gone. Set tuiMode to "regular" in the settings, or pass --tui-mode regular, for the old behaviour
    • BREAKING: MCP OAuth credentials are keyed by server name and URL instead of by URL alone, so two servers behind one URL can hold separate accounts. Credentials written by 0.99.x move to the first server that reads them; other servers on the same URL have to sign in again
    • BREAKING: MCP sign-in enforces RFC 9207 and rejects an authorization response whose iss names another authorization server. A server advertising a wrong or missing one needs the new oauth.authServerMetadataUrl setting
    • BREAKING: --provider without --model fails now instead of silently running another provider's default model
    • BREAKING: codemode scripts have to probe for a tool with "name" in tools; typeof tools.name no longer finds it, and the codemode description carries one call line per tool instead of the full declaration
    • BREAKING: quietStartup also takes "header", which keeps the version and key hints but hides the model scope line and the loaded-resource listing
    • Sign in with Radius from /login, which can set up the Radius MCP server too, and with a copy code for Anthropic when the browser runs on another machine
    • Codemode scripts call models.generateImages() to run image models with the session's credentials. Codemode needs about 40% fewer prompt tokens and its errors now name close matches and the expected argument shape
    • MCP step-up sign-in keeps the scopes it already had, so a server asking for more no longer causes a sign-in loop
    • Fix MCP tools that tool_search loaded being dropped on resume and /reload, user messages keeping two full-width copies of every rendered line, and slash command completion after leading whitespace
    • Fix the memory a long assistant message keeps in the transcript (about a fifth of before), colour bleeding past highlights in fullscreen mode, and the system theme oversaturating pastel palettes
    • Many more fixes and improvements; see upstream's release notes
  • Refresh the vendored node_modules: the ten @earendil-works packages go 0.99.2 -> 1.0.0 and nothing else in the 119 shipped modules moves, so the license union is unchanged. pi-agent-core drops its chord, pi-telemetry, diff, ignore and yaml deps, all of which other packages in the tree still pull in.

  • The codemode sandbox is still WebAssembly only (quickjs.wasm plus five .so-named WASI modules, no ELF), so the package stays noarch

  • Update to version 0.99.2:

    • MCP servers with the default codemode exposure no longer block the first prompt; they are listed in a short mcp_servers system prompt section and scripts find their tools with searchTools() and describeNamespace()
    • More MCP authentication: oauth.clientName for servers that only accept known OAuth clients, and "auth": {"provider": ...} to send a provider's /login token to an HTTP server
    • Anthropic workload identity federation from ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID and ANTHROPIC_IDENTITY_TOKEN_FILE
    • /reload enables tools newly added to the defaultTools setting
    • Fix codemode image() accepting malformed base64 or unsupported image types, which made every later provider request fail with HTTP 400
    • Fix codemode scripts calling the wrong MCP tool when two names differ only in "-" and ""; such names now normalise to ""
    • Fix new sessions intermittently ignoring the saved default model, or warning that no models are available, for extension-registered providers with a stored credential
    • Fix Anthropic requests failing when a tool schema uses minimum or maximum, which strict tool use rejects; such tools are sent non-strict
    • Fix provider retries firing immediately on an unparseable Retry-After date, and prompt submission slowing as a session grows
    • Many more fixes and improvements; see upstream's release notes
  • Refresh the vendored node_modules: the ten @earendil-works packages go 0.99.1 -> 0.99.2 and nothing else in the 119 shipped modules moves, so the license union is unchanged

    • CVE-2026-102277 (boo#1283392): brace-expansion is 5.0.12, at the fix floor, so the package is not affected by it
    • CVE-2026-102278 (boo#1283412): brace-expansion is 5.0.12, above the 5.0.11 fix floor, so the package is not affected by it
  • Update to version 0.99.1 (upstream jumped from 0.87.1; no 0.88-0.98 releases exist):

    • Codemode and MCP: model-written JavaScript runs in a QuickJS WebAssembly sandbox calling pi's tools in parallel; MCP servers over stdio/HTTP with OAuth come from mcp.json and are managed with /mcp and pi mcp add|remove|list|login|logout
    • New default system theme follows the terminal's own palette, with #rgb/oklch()/okhsl() colors and light/dark rebuilding
    • Sign in with ChatGPT on the OpenAI provider; inherited OpenAI Codex provider renamed "OpenAI Codex (legacy)"
    • Experimental virtual models route each request to a physical model; llama.cpp models gain classifier support
    • GPT-6.1 Sol joins OpenAI, Azure OpenAI and OpenAI Codex, and becomes the default Codex model
    • Built-in extensions and tools are named builtin:, --no-extensions disables them too; tool APIs gain exposure, namespaces, annotations, structuredContent, ctx.executeTool()
    • Sessions are created on the first user message, so pi no longer loses them when it exits before the first response
    • Many more fixes and improvements; see upstream's release notes
  • Refresh package-lock.json (now the full npm-generated lockfile, integrity complete) and the vendored node_modules archive: 116 -> 119 shipped modules, with @earendil-works/pi-codemode, @earendil-works/pi-mcp and quickjs-wasi new, openai 6.40.0 -> 7.19.0 and agent-base/https-proxy-agent 7.x -> 9.x; license union unchanged

  • The new codemode sandbox ships as WebAssembly only (quickjs.wasm plus five .so-named WASI modules, no ELF), so the package stays noarch

  • Update to version 0.87.1:

    • New frontier models: Claude Opus 5.5, GPT-6 Sol and Luna across providers; Grok 4.7 default for xAI
    • Fix split-turn compaction summaries refused by Claude Fable 5.1; invalid --mode values now error out
    • Undici 8.10.2 retained: the 8 CVE batch fixed since 0.86.1 (CVE-2026-84961, CVE-2026-85024, CVE-2026-85008, CVE-2026-84947, CVE-2026-85152, CVE-2026-84890, CVE-2026-84933, CVE-2026-85014; boo#1279832)
  • Refresh the vendored node_modules

References

Affected packages

openSUSE:Leap 16.0 / pi-coding-agent

Package

Name
pi-coding-agent
Purl
pkg:rpm/opensuse/pi-coding-agent&distro=openSUSE%20Leap%2016.0

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
1.0.4-bp160.1.1

Ecosystem specific

{
    "binaries":  [
        {
            "pi-coding-agent":  "1.0.4-bp160.1.1",
            "pi-coding-agent-examples":  "1.0.4-bp160.1.1"
        }
    ]
}

Database specific

source
"https://ftp.suse.com/pub/projects/security/osv/openSUSE-SU-2026:22111-1.json"