Pi Project Update

Sample pod that summarizes changes to the Pi project [1] using the new git: source format. [1] https://github.com/earendil-works/pi

Cadence: Daily
Length: 2 minutes

Subscribe, Combine, Customize

Subscribe to this podcast
?Receive all episodes to this podcast in the apps below or anywhere that supports RSS.
Combine these episodes into your pod
?All episodes from this podcast will be fed into your own.
Sign up to add to your own podcast
Customize this pod with your own sources
?Use this if you want a brand new podcast with its own episodes using different sources.
Sign up to customize this pod

Sources

Episodes

Pi Project Update September 13: Pi 0.85.1 Streaming Bug, Copilot 403s, Gemini 3 Flash Failures
Created: September 13th, 2026 - 04:30 PT
Script

Here is today's Pi Project Update for Sunday September 13th. A newly closed tracker report today identifies a visible streaming bug in Pi 0.85.1: the first token of a model’s thinking text can appear twice in streaming interfaces. The report traces this to the initial message snapshot sharing mutable content with the live output object. By the time a user interface reads that snapshot, the first thinking delta may already be present, then gets replayed again. The stored final message is unaffected, but users can briefly see duplicated text such as “TheThe user asks.” A proposed fix copies the content at the start event, and was locally verified across several providers.

Today’s activity also highlights a Windows-specific GitHub Copilot reliability problem. Pi’s Node and undici-based OAuth refresh request reportedly receives GitHub’s 403 anti-scraping response, even though the same credentials and endpoint work through PowerShell, Git for Windows curl, and a browser on the same machine. The likely distinction is the TLS or HTTP fingerprint of Node’s networking stack. Until there is a product-level workaround, affected users may need the impractical manual step of refreshing a token externally and placing it into Pi’s authentication file. [1]

A separate interface report says mouse input does not reach content inside Pi’s ScrollView component. In fullscreen mode, that can leave transcript components effectively unclickable: wheel movement scrolls the outer viewport, but embedded interactive components never receive mouse events. The proposed change forwards events to the mapped content row while retaining existing scroll chaining behavior. [2]

Finally, yesterday’s Vertex AI report carries broader workflow implications. Gemini 3 Flash models reject Pi’s requested MINIMAL thinking level, including when thinking is disabled. That can make automatic and manual context compaction fail outright in workflows that reuse the session model for summarization. The suggested safeguard is to use LOW instead, or omit unsupported thinking settings.

The common trend is that Pi’s core agent features increasingly depend on small but consequential integration details: immutable streaming events, transport fingerprints, input routing, and provider-specific reasoning controls. Thank you for listening to Pi Project Update from The Daily FM. See you tomorrow!

Source Evidence
  1. earendil-works/pi: development activity
    ...ope "Current Folder" it is fine: the parent is not in the listing, so the child is a root.
    
    ### How? (optional)
    
    In `threaded` mode, only nest when parent and child share a `cwd`; otherwise treat the child as a root. One condition in `buildSessionTree…
    
    #9546 GitHub Copilot OAuth refresh returns 403 scraping response with Node/undici (closed 2026-09-13)
    ### What happened?
    
    On Windows, pi fails to refresh the GitHub Copilot OAuth credential:
    
    Error: OAuth refresh failed for github-copilot: 403 Forbi
  2. earendil-works/pi: development activity
    ...ut the tree is a lineage tree. The two groupings agree as long as a session never leaves its project. As soon as one does, the indentation claims "same project, older conversation" when that is no longer true.
    
    Repro (this is what my `/move-session` extension does: rewrite the header `cwd`, move the file, leave `parentSession` alone):
    
    ```
    before
      └─ A   [cwd projectA]
        └─ B   [cwd projectA]
    
    after moving B into projectB, scope "All"
      └─ A   [cwd projectA]
        └─ B   [cwd projectB]      <- nested across working directories
    ```
    
    In scope "Current Folder" it is fine: the parent is not in the listing, so the child is a root.
    
    ### How? (optional)
    
    In `threaded` mode, only nest when parent and child share a `cwd`; otherwise treat the child as a root. One condition in `buildSessionTree…
    
    #9546 GitHub Copilot OAuth refresh returns 403 scraping response with Node/undici...
Sources
    Pi Project Update September 12: Pi 0.85.1 Exposes RPC Default, Streaming Retry, and Remote Grep Gaps
    Created: September 12th, 2026 - 04:30 PT
    Script

    Here is today's Pi Project Update for Saturday September 12th. Yesterday, Pi merged a substantial expansion of its documentation evaluation framework for the coding agent. The new tests measure whether Pi’s own documentation improves an agent’s ability to configure providers, use OpenAI-compatible endpoints, and implement custom streaming providers. The work compares Pi’s normal system prompt against a version with Pi-specific docs removed, runs repeated trials, and saves both text and JSON aggregate reports. For maintainers, this moves documentation quality beyond link checking toward evidence of whether instructions actually help users and agents complete real setup tasks. [1]

    Today’s issue activity puts integration reliability in focus. One newly closed report says the RPC model catalog does not identify the user’s configured default model. External tools can therefore select the first catalog entry and pass it explicitly, silently overriding a custom default that works correctly in Pi’s interactive CLI. This matters for embedding platforms and automation tools that launch Pi through RPC rather than directly in a terminal. [2]

    A second report identifies a recovery gap in version 0.85.1: a stream_read_error is not classified as retryable, even when retries are enabled. The result is that a session can stop after a transient streaming failure and wait for the user to manually send another message. The requested behavior is consistent with existing network-error handling: retain completed tool results, display a retry state, and resume automatically within the configured limits.

    There is also a notable proposal for remote and sandboxed coding environments. Pi’s grep tool accepts injected filesystem operations for some tasks, but the actual search still launches ripgrep on the host machine. That leaves embedders unable to search a container or remote filesystem despite redirecting other tool I/O. Adding an optional search hook would make grep consistent with find, read, write, and shell execution.

    The trend is clear: Pi is strengthening both how it evaluates its guidance and how reliably it behaves when embedded in larger systems. Provider customization, safe defaults, transient-error recovery, and remote filesystem support are becoming central to the project’s practical usability. Thank you for listening to Pi Project Update from The Daily FM. See you tomorrow!

    Source Evidence
    1. earendil-works/pi: development activity
      ...custom streaming provider
      - compare Pi's default system prompt with a baseline that removes only Pi documentation
      - isolate eval home and agent state while preserving runtime reload behavior and session artifacts
      - add repeated comparative runs plus persisted text and JSON aggregate reports
      - document full and compound eval commands and report artifacts
      
      ## Testing
      
      - `npm run build`
      - `npm run check`
      - `./test.sh`
      Files: packages/evals/README.md (+47/-4), packages/evals/scripts/run-evals.mjs (+23/-0), packages/evals/src/docs.eval.ts (+1/-1), packages/evals/src/extensions.eval.ts (+11/-24), packages/evals/src/models.eval.ts (+151/-0), packages/evals/src/pi-harness.ts (+56/-15), packages/evals/src/providers.eval.ts (+410/-0), packages/evals/src/smoke.eval.ts (+2/-2), packages/evals/src/vitest-evals/harness-table.ts (+12/-1), packages/evals/src/vitest-evals/reporter.ts...
    2. earendil-works/pi: development activity
      ...-0), vitest.base.ts (+5/-0)
      
      Closed issues (30):
      
      #9527 RPC: get_available_models exposes no configured-default model, so integrations fall back to models[0] and override it (closed 2026-09-12)
      **What happened?**
      
      RPC's `get_available_models` returns the full model catalog but gives no indication of which model pi would actually use as default (i.e. `defaultProvider`/`defaultModel` from settings.json). Model objects have no `isDefault`-style field, and the response has no default-model pointer.
      
      External RPC integrations that need to pick a default themselves therefore fall back to `models[0]` and pass it via `--model` — silently overriding the user's configured default with an unrelated built-in model.
      
      Rea
    Sources
      Pi Project Update September 11: Pi Fixes Mistral GLM-5.2 Reasoning Amid Context Compaction Risks
      Created: September 11th, 2026 - 04:30 PT
      Script

      Here is today's Pi Project Update for Friday September 11th. Yesterday, Pi merged a fix enabling GLM-5.2 reasoning through Mistral. The change addresses a report that Mistral-hosted GLM-5.2 ignored Pi’s reasoning settings even at the maximum level. It is a targeted provider adapter update, but an important one for users who expect Pi’s common thinking controls to work consistently across model hosts.

      Pi also refreshed its model data yesterday, removing retired GPT-5.4 Codex entries and updating DeepSeek Flash catalog identifiers and tests. Catalog accuracy may sound routine, but it prevents users from selecting models that providers have already withdrawn and helps Pi route requests to the current DeepSeek names. Alongside that, Fireworks Messages now supports deferred tool loading, suggesting continued work on reducing unnecessary tool overhead for providers that can load capabilities on demand.

      Today’s closed issue activity highlights a more serious reliability concern around automatic context compaction. One report found that a generic empty-body HTTP 400 response from OpenAI-compatible gateways could be mistaken for a context-window overflow. Pi could then skip retrying and compact a conversation that was nowhere near its actual limit, potentially replacing hundreds of thousands of tokens of detailed history with a summary. A related report says massive tool outputs can make Pi’s character-based token estimate overshoot by roughly a hundredfold and trigger another compaction immediately after one has just completed. These are issue reports rather than confirmed release notes, but together they make context preservation a clear priority. [1]

      Another newly closed report says RPC mode in version 0.85.1 can fail every prompt with a startsWith error before a session is even created. That would directly affect subagent runners and other automation that spawn Pi as an RPC child process.

      The trend is a familiar one: Pi’s provider coverage is advancing, but dependable automation depends on accurate model catalogs, safe error classification, and durable context handling. Thank you for listening to Pi Project Update from The Daily FM. See you tomorrow!

      Source Evidence
      1. earendil-works/pi: development activity
        ...uous: these endpoints only serve Coding Plan subscribers, so no false positive is possible.
        - Without the marker, subscription users see a growing `$` number that reads like real spend.
        
        **Version**: 0.85.1 (macOS)
        
        #9482 Empty-body 400 from OpenAI-compatible gateways (opencode-go/deepseek-v4-flash) misclassified as context overflow → destructive auto-compaction destroys up to ~400k tokens (closed 2026-09-11)
        ## Severity
        
        **This is a serious, non-cosmetic bug that directly degrades pi's quality of work.** A transient HTTP 400 with an empty body from an OpenAI-compatible gateway is misclassified as context overflow, which makes pi skip retry and destroys up to ~400k tokens of conversation history via auto-compaction — even though context usage is only 13–40% of the model's window and t
      Sources
        Pi Project Update September 10: Pi Adds OpenRouter Affinity, Fireworks Reasoning Support, Per-Model Context Budgets
        Created: September 10th, 2026 - 04:30 PT
        Script

        Here is today's Pi Project Update for Thursday September 10th. Yesterday, Pi merged a stronger documentation quality system centered on a versioned navigation manifest. The coding-agent docs now use a recursive docs.json file as the source of truth for site navigation, and automated tests validate page paths, duplicate slugs, local Markdown links, and whether every page can actually be reached from a navigation root. Documentation evaluations will also discover cases from every Markdown file rather than only pages listed in the catalog. For contributors, this turns broken links and orphaned pages from easy-to-miss maintenance debt into test failures. [1]

        Provider work continued yesterday with several targeted compatibility improvements. Pi now sends OpenRouter session-affinity headers by default, helping keep requests within a consistent upstream session. The prior episode covered the underlying OpenCode header fix; this is a separate OpenRouter-specific refinement. Meanwhile, Fireworks models gain better support for adaptive thinking metadata and native reasoning-effort levels, while Codex now recognizes an explicit “off” reasoning setting. Together, these changes show Pi is increasingly translating one interface for thinking controls into the distinct conventions each provider expects.

        Another new feature is per-model compaction token budgets. Rather than relying solely on global settings, users can tailor how much context Pi reserves or retains for individual models. That matters when switching between models with dramatically different context windows, pricing, or performance characteristics: a compaction policy suitable for a smaller model may be unnecessarily restrictive—or unsafe—on a much larger one.

        Today’s issue activity also highlights session reliability as an important next frontier. Reports describe Pi silently opening session files written by newer versions, and failing to create a session file until the first assistant response arrives. In the latter case, interrupting a slow request could lose the user’s first message entirely. These are tracker reports, not confirmed shipped fixes, but they point to a clear expectation: persistent agent conversations need explicit version checks and early, durable writes.

        The broader trend is maturity through guardrails—validated documentation, provider-aware behavior, model-specific context management, and stronger protection for the work users expect Pi to remember. Thank you for listening to Pi Project Update from The Daily FM. See you tomorrow!

        Source Evidence
        1. earendil-works/pi: development activity
          Repository earendil-works/pi (https://github.com/earendil-works/pi) — development activity since 2026-09-09.
          
          Merged pull requests (1):
          
          #9380 docs: validate documentation navigation and reachability (merged 2026-09-09)
          ## Summary
          
          - make `packages/coding-agent/docs/docs.json` the versioned, recursive website navigation manifest
          - validate navigation structure, page paths, duplicate slugs, local Markdown links, and reachability from navigation roots in the coding-agent test suite
          - discover documentation eval cases directly from every Markdown file, independent of navigation
          
          ## Testing
          
          - `npm run check`
          - `./test.sh`
          Files: package-lock.json (+1/-0), packages/coding-agent/docs/docs.json (+4/-0), packages/coding-agent/p...
        Sources
          Pi Project Update September 9: Pi Fixes Anthropic Extension Crashes and OpenCode 400 Errors
          Created: September 9th, 2026 - 04:30 PT
          Script

          Here is today's Pi Project Update for Wednesday September 9th. Pi has added two new contributor skills covering interactive testing and release work. Merged today, the change moves detailed guidance out of the main agent instructions and into dedicated, reusable documents. The release skill lays out versioning, changelog, build, publishing, and verification steps, while the testing skill explains how to exercise Pi interactively. The practical goal is to make routine engineering procedures clearer without overloading the general instructions that agents and contributors read first. [1]

          A second major development is a package of provider and extension reliability fixes. Pi has now added validation for extension tool parameter schemas, addressing a failure mode in which an extension registering a tool without a schema could prevent every request in an Anthropic-based session from running. Rather than allowing an undefined configuration to reach a provider adapter and crash, Pi is strengthening validation at the extension boundary.

          OpenCode compatibility has also advanced. A new fix sends the stable OpenCode session header required by OpenCode and OpenCode Go requests. That is significant because users had reported 400 errors for requests lacking the header, including in summarization and embedded pi-ai use cases. The previous episode highlighted this as an emerging provider risk; today’s commit is the concrete response. Users should still watch for the fix in the next published package version before assuming installed 0.85.1 builds are covered.

          Yesterday, Pi also merged a configurable cap on the coding agent’s exponential retry backoff. During prolonged upstream outages, retries previously could grow from seconds into impractically long waits. The new default ceiling is 30 seconds, while users who specifically want the old uncapped behavior can retain it through configuration. That should make long-running sessions more responsive when a provider recovers.

          Finally, work continues on named, streaming conversation forks. A substantial merge yesterday revamped fork persistence, JSONL storage and migration logic, plus conformance tests. It is still labeled work in progress, but it suggests Pi is preparing richer branching workflows that preserve streaming state more reliably. [2]

          The common thread is resilience at boundaries: clearer release discipline, safer third-party extensions, provider-specific protocol compliance, bounded recovery from outages, and sturdier session branching. Thank you for listening to Pi Project Update from The Daily FM. See you tomorrow!

          Source Evidence
          1. earendil-works/pi: development activity
            Repository earendil-works/pi (https://github.com/earendil-works/pi) — development activity since 2026-09-08.
            
            Merged pull requests (3):
            
            #9370 docs: extract interactive testing and release guidance into skills (merged 2026-09-09)
            Files: .pi/skills/interactive-testing.md (+19/-0), .pi/skills/release.md (+48/-0), AGENTS.md (+2/-47)
            
            #9341 fix(coding-agent): update runtime dependencies (merged 2026-09-08)
            ## Summary
            
            - update the selected runtime dependencies, including `minimatch`, while retaining the existing `diff`, `openai`, and `highlight.js` versions
            - regenerate the root lockfile, coding-agent shrinkwrap, and installer lock
            - preserve workspace-nested proxy dependency versions in generated locks
            - handle Google GenAI...
          2. earendil-works/pi: development activity
            ...(+14/-5), packages/protocol/package.json (+1/-1), packages/tui/package.json (+2/-2), scripts/build-coding-agent-bundle.mjs (+2/-0), scripts/generate-coding-agent-install-lock.mjs (+30/-13), scripts/generate-coding-agent-shrinkwrap.mjs (+32/-13)
            
            #9152 DRAFT: forks streaming (merged 2026-09-08)
            still work in progress
            Files: packages/agent/docs/work-packages/08-named-branch-streaming-forks.md (+45/-39), packages/agent/src/harness/env/nodejs.ts (+95/-22), packages/agent/src/harness/session/fork-policy.ts (+56/-21), packages/agent/src/harness/session/fork.ts (+30/-72), packages/agent/src/harness/session/in-memory-storage-state.ts (+12
          Sources
            Pi Project Update September 8: Pi Slashes EventStream Drain Time, Fixes Mistral Medium Reasoning
            Created: September 8th, 2026 - 04:30 PT
            Script

            Here is today's Pi Project Update for Tuesday September 8th. Yesterday, Pi merged a new implementation-backed documentation evaluation system. It now generates an audit for every Markdown page listed in the coding-agent documentation catalog, checks that the catalog has complete and non-duplicated paths, and records structured verdicts from an evaluation model. The first run covered 29 documents: the updated session-format guide passed, while 21 other pages showed existing drift from the implementation. This is not a wholesale documentation rewrite yet, but it gives maintainers a repeatable way to find where guides no longer match the product. [1]

            Repository activity also includes a performance-focused fix to Pi’s EventStream queue. The old queue removed buffered events with JavaScript’s array shift operation, whose cost grows sharply as queues get larger. A benchmark attached to the work found that draining 200,000 events took nearly 12 seconds before the change and roughly 20 milliseconds with the new FIFO-style approach. That matters most for embedded or long-running agent services, where a burst of streamed model output should not monopolize CPU and delay unrelated work.

            A third change improves Mistral Medium reasoning controls. Pi now uses the provider’s reasoning_effort field for reasoning-capable mistral-medium models. That directly addresses reports that choosing medium thinking could produce a 400 error saying reasoning prompt mode was unavailable. For users, the key result should be that Pi’s thinking-level setting maps more accurately to the provider’s current API behavior.

            Finally, yesterday’s cleanup replaced remaining references to the former earendil-works/pi-mono repository name across prompts, documentation, code comments, and tests. It is a small change, but useful for contributors and extension developers following links from Pi’s own materials. [2]

            The larger pattern is operational maturity. Pi is investing not just in visible features, but in systems that keep a fast-moving agent platform maintainable: automated checks against documentation drift, scalable streaming internals, accurate provider-specific controls, and cleaner project references. At the same time, today’s tracker continues to surface integration edge cases around OpenCode session headers, RPC behavior, and extension UI safety—evidence that providers and embedding workflows remain the project’s most active reliability frontier. Thank you for listening to Pi Project Update from The Daily FM. See you tomorrow!

            Source Evidence
            1. earendil-works/pi: development activity
              ...documentation evals (merged 2026-09-07)
              ## Summary
              
              - generate one implementation audit for every Markdown page cataloged by `packages/coding-agent/docs/index.md`
              - validate catalog coverage, paths, and duplicates deterministically
              - capture schema-validated audit verdicts through a terminating custom tool
              - correct session-format documentation drift found by the audit
              
              ## Validation
              
              - focused eval tests: 11 passed
              - eval package tests: 28 passed
              - all 29 documentation audits executed with `openai-codex/gpt-5.6-sol`; `session-format.md` passed and 21 other pages reported existing documentation drift
              - simplified `session-format.md` audit rerun: passed
              - `npm run check` and the full `./test.sh` remain blocked by unrelated generated model-catalog inconsistencies in `packages/ai`
              Files: packages/coding-agent/docs/session-format.md (+45/-33), packages/evals/README.md (+...
            2. earendil-works/pi: development activity
              ...d (+45/-33), packages/evals/README.md (+3/-0), packages/evals/src/docs-catalog.ts (+61/-0), packages/evals/src/docs.eval.ts (+71/-0), packages/evals/src/pi-harness.ts (+7/-3), packages/evals/test/docs-catalog.test.ts (+109/-0)
              
              #9278 fix(coding-agent): update repository links in prompts, docs, and code (merged 2026-09-07)
              **description**
              
              - update references of `earendil-works/pi-mono` to `earendil-works/pi`
                - incl. prompt templates, comments and docs
              Files: .pi/prompts/cl.md (+2/-2), AGENTS.md (+2/-2), packages/ai/test/openai-completions-empty-tools.test.ts (+1/-1), packages/ai/test/tool-call-id-normalization.test.ts (+1/-1), packages/coding-agent/docs/compaction.md (+12/-12), packages/coding-agent/docs/custom-provider.md (+8/-8), packages/coding-agent/docs/development.md (+4/-4), packages/coding-agent/docs/extensions.md (+9/-9), packages/coding-agent/docs/json....
            Sources
              Pi Project Update September 7: Pi Restores Copilot GPT-6 Astra, Fixes Extension Streaming and Session Races
              Created: September 7th, 2026 - 04:30 PT
              Script

              Here is today's Pi Project Update for Monday September 7th. Pi has moved quickly to restore compatibility with GitHub Copilot’s GPT-6 Astra model. A fix merged today routes Copilot GPT models through the newer OpenAI Responses API rather than the older Chat Completions endpoint. That matters because Astra was returning a 400 error when Pi sent it to the unsupported endpoint. The update also takes a forward-looking approach: because GPT-4 models are no longer part of Copilot’s relevant catalog, the routing rule can consistently cover the current GPT lineup. Users on Pi 0.85.1 who enabled Astra in Copilot should see this as an important repair. [1]

              A second merged fix expands what extensions can do with custom model providers. Pi’s extension-facing model registry now exposes streaming methods alongside its existing completion method. Previously, an extension that needed token-by-token output could bypass Pi’s provider-composition layer, causing custom extension-registered providers to fail. With the new interface, streamed responses can use the same provider routing, authentication, headers, and configuration as normal Pi chats. This should particularly help extensions that run critiques, summaries, or second opinions through a user-selected model. [2]

              Session-tree safety also received a targeted concurrency fix today. Pi now rejects tree navigation while conversation compaction is in progress, preventing a race where a summary prepared for one branch could be attached to another. In the worst case, the next model request could lose the retained conversational context and contain only the summary. The fix protects both manual and automatic compaction, and includes regression coverage for the conflicting operations. [3]

              The tracker also highlights why these fixes matter. One report describes Pi’s grep tool exhausting Node’s memory when context lines are requested across very large log files, while others flag expensive streaming tool-call parsing and redraw problems in long terminal transcripts. Those are not confirmed shipped fixes in today’s activity, but they point to the next likely focus areas.

              The broader trend is reliability under real-world complexity: modern provider APIs, extension-defined routing, concurrent session operations, and large-scale coding workloads. Pi is increasingly hardening the paths that matter once an agent moves beyond a simple terminal chat. Thank you for listening to Pi Project Update from The Daily FM. See you tomorrow!

              Source Evidence
              1. earendil-works/pi: development activity
                Repository earendil-works/pi (https://github.com/earendil-works/pi) — development activity since 2026-09-06.
                
                Merged pull requests (3):
                
                #9253 fix(ai): route Copilot GPT models through Responses (fixes astra) (merged 2026-09-07)
                Fixes #9209
                
                Also tries to be future looking, there are no gpt4 models in github catalog anymore (both in their docs / APIs or on model.dev) (only as utility models and that is not relevant here)  so the change is safe.
                Files: packages/ai/scripts/generate-models.ts (+2/-2), packages/ai/test/model-catalog-types.test.ts (+8/-0)
                
                #9272 fix(coding-agent): allow extensions to stream from custom providers (#9272) (merged 2026-09-...
              2. earendil-works/pi: development activity
                Repository earendil-works/pi (https://github.com/earendil-works/pi) — development activity since 2026-09-06.
                
                Merged pull requests (3):
                
                #9253 fix(ai): route Copilot GPT models through Responses (fixes astra) (merged 2026-09-07)
                Fixes #9209
                
                Also tries to be future looking, there are no gpt4 models in github catalog anymore (both in their docs / APIs or on model.dev) (only as utility models and that is not relevant here)  so the change is safe.
                Files: packages/ai/scripts/generate-models.ts (+2/-2), packages/ai/test/model-catalog-types.test.ts (+8/-0)
                
                #9272 fix(coding-agent): allow extensions to stream from custom providers (#9272) (merged 2026-09-07)
                - expose `stream(...)` and `streamSimple(...)` similar to `complete(...)`
                - fixes #8964
                Files: packages/coding-agent/CHANGELOG.md (+4/...
              3. earendil-works/pi: development activity
                ...-streaming.test.ts (+63/-0)
                
                #9179 fix(coding-agent): reject tree navigation during compaction (merged 2026-09-07)
                ## Summary
                
                - reject tree navigation while compaction or another tree navigation is active
                - keep compaction results and retained context on the branch from which they were prepared
                - cover both races with regression tests
                
                ## Scope
                
                `compact()` prepares a summary from the current branch, then awaits extension hooks or the model. A concurrent `navigateTree()` can change the leaf during that wait, causing `appendCompaction()` to attach the old branch's summary and `firstKeptEntryId` to the new branch.
                
                The fix uses the existing `isCompacting` state, which covers manual compaction, automatic compaction, and the tree-navigation window tracked by the branch-summary controller. Idle tree navigation and the current streaming guard are unchanged.
                
                #9155 covers t...
              Sources
                Pi Project Update September 6: OpenCode Go Session Header Threatens Pi 0.85.0–0.85.1 Requests
                Created: September 6th, 2026 - 04:30 PT
                Script

                Here is today's Pi Project Update for Sunday September 6th. Yesterday, Pi merged a behind-the-scenes clipboard overhaul for its terminal interface. The project replaced a Rust-based clipboard dependency with native helpers and command-line integrations, while bringing a small C helper back into the repository. The practical goal is broader build compatibility, especially for NixOS and other Linux environments where the prior dependency chain was cumbersome. On Linux, Pi will now favor installed clipboard commands rather than dynamically linking native libraries, a choice intended to be more portable in real-world terminal setups. The change also adds focused tests for clipboard commands, images, bitmap conversion, and error handling. [1]

                Today’s tracker activity highlights an urgent provider compatibility concern. OpenCode Go has begun requiring a stable `x-opencode-session` header per conversation, and a report says Pi’s OpenCode Go transport does not actually send it, despite code that appears intended to generate the header. The provider warned that requests without it may fail starting today. Users of Pi versions 0.85.0 and 0.85.1 who rely on that provider should watch their requests closely and check for a follow-up release or workaround.

                Two Windows and package-distribution reports underline the challenges around Pi’s growing ecosystem. One report says Pi can prefer WSL Bash whenever `wsl.exe` exists, even if WSL itself is disabled and the user explicitly configured PowerShell or Git Bash through `shell_path`. Another finds that version 0.85.1 published broken export paths for the client and experimental plugin submodules. A separate installation report says globally installed Pi packages can fail to start subagent child sessions because required server and client packages are undeclared dependencies.

                The pattern is clear: Pi’s core interface is becoming leaner and more portable, but the immediate reliability work is concentrated at integration boundaries—provider protocol changes, Windows shell selection, and npm packaging. For users, that makes version pinning and testing provider-specific workflows especially important while these edges are resolved. Thank you for listening to Pi Project Update from The Daily FM. See you tomorrow!

                Source Evidence
                1. earendil-works/pi: development activity
                  ...plify the clipboard handling.  Initially the plan was just to move the clipboard library in to make it possible to build for NixOS and others.  However the rust library is quite a lot of overkill for the little amount of stuff that needs to be pulled from the native libraries and directly bundling it with the already existing native helpers is actually easier.
                  
                  Also means we can just again bundle the C binary in git.
                  
                  This is a direct port of the Rust code, but I still want to do some sanity checks.  On Linux however this now directly utilizes the command line executables than linking against anything.  They are more likely to work anyways from what I can tell.
                  Files: README.md (+1/-1), package-lock.json (+0/-182), package.json (+3/-0), packages/coding-agent/docs/termux.md (+0/-1), packages/coding-agent/install-lock/package-lock.json (+0/-182), packages/coding-age...
                Sources
                  Pi Project Update September 5: Pi Boosts Scroll Speed, Documents Anthropic-Safe Docker Sandboxes
                  Created: September 5th, 2026 - 04:30 PT
                  Script

                  Here is today's Pi Project Update for Saturday September 5th. Pi’s freshest user-facing change is a small but welcome terminal-navigation improvement: Alt-modified mouse-wheel scrolling is now five times faster. Merged today, the update targets long transcripts in the alternate-screen interface, where moving through tool output and extended conversations one notch at a time can be tedious. It is a focused quality-of-life improvement, backed by new interface tests, and continues Pi’s recent emphasis on making lengthy agent sessions easier to inspect.

                  Yesterday’s keybinding work also makes Pi’s interactive model controls more consistent. The `/model` selector and thinking selector now honor configurable save shortcuts rather than hard-coding Control-S. That means users can remap the model-saving action and expect the change to work across the relevant pickers, while the scoped-model interface now displays shortcut names with consistent capitalization. This is particularly useful for people combining Pi’s built-in controls with extension shortcuts. [1]

                  Containerized use received new documentation yesterday as well. Pi now documents running the coding agent in managed Docker Sandboxes. The notable security detail is credential handling: instead of exposing the real provider token inside the container, the sandbox holds a placeholder and substitutes the real credential only when making the outbound request to Anthropic. For teams evaluating isolated agent environments, that clarifies a safer deployment pattern than placing API keys directly in a normal Docker container.

                  The issue tracker, meanwhile, surfaced several important reliability concerns today. Reports describe regular-terminal redraws that can clear scrollback or jump the viewport during long streaming sessions, especially in small terminals. Another report flags a packaging regression in version 0.85.0: direct library imports may fail because the published coding-agent package does not declare its pi-server dependency. These reports are marked closed, but the activity list does not independently confirm a released remedy, so affected users should rely on the bundled CLI entry point and watch for a follow-up package update.

                  The broader trend is polish at operational boundaries: faster navigation, configurable controls, safer sandbox credentials, and continued pressure to make Pi dependable in long-lived, customized, and embedded workflows. Thank you for listening to Pi Project Update from The Daily FM. See you tomorrow!

                  Source Evidence
                  1. earendil-works/pi: development activity
                    ...(merged 2026-09-05)
                    When Alt is held, scroll 5x faster. Very straight-forward with how mouse event are implemented.
                    
                    Closese #9052
                    Files: packages/tui/src/tui-alt-screen.ts (+8/-2), packages/tui/test/tui-alt-screen.test.ts (+16/-0)
                    
                    #9149 fix(coding-agent): selector save keybindings (merged 2026-09-04)
                    **Description**
                    
                    - use `app.models.save` instead of hard-coded `Ctrl+S` for `/model`
                    - add `app.thinking.save` which replaces the hard-coded `Ctrl+S` for `/thinking`
                    - align the shortcut copy in `/scoped-models` to use `keyDisplayText(...)`, since the majority of the settings use capitalized notation.
                    - fixes #8797
                    
                    **Test**
                    
                    | `/scoped-models` capitalization **BEFORE** | `/scoped-models` capitalization **AFTER** |
                    | ------------- | ------------- |
                    | <img width="2122" height="686" alt="CleanShot 2026-09-04 at 16 57 11@2x" src="https://github.com/user-attach...
                  Sources
                    Pi Project Update September 4: Pi 0.85.0 Removes Broken Grok Build, Fixes Agent Failures
                    Created: September 4th, 2026 - 04:30 PT
                    Script

                    Here is today's Pi Project Update for Friday September 4th. Pi has released version 0.85.0, capping a busy round of fixes and interface work. The clearest same-day compatibility change removes Grok Build 0.1 from Pi’s built-in xAI model catalog. The model was failing because Pi sent a reasoning-effort parameter that xAI does not support for that endpoint. Rather than leaving users with a selectable but broken default option, Pi now lists the supported Grok 4.3, 4.5, and 4.6 models instead. Users who specifically need Build 0.1 may still configure it themselves, but it is no longer presented as a ready-to-use built-in choice.

                    Yesterday’s reliability work also landed in the agent core. Commands terminated by signals will no longer be reported as successful. Previously, a process killed by something like the out-of-memory killer could return a null exit code that Pi converted into zero, making truncated shell output look like a completed command. Pi now maps signal termination to conventional nonzero shell statuses, such as 137 for SIGKILL. That is a critical correction for coding agents: models can now recognize failed builds, tests, and shell tasks rather than acting on misleading partial results.

                    Linux users on NixOS and Alpine also get a practical repair. Pi’s downloader now selects statically linked musl builds of fd and ripgrep across supported Linux architectures. The earlier glibc-linked downloads could fail outright on those systems, leaving Pi’s find and grep capabilities unavailable unless the tools were already installed locally. [1]

                    On the usability side, Pi continues polishing its fullscreen terminal mode. Yesterday’s updates added clearer search controls, including Control-Shift-F and Escape to open or close search, plus refined scrollbars and a more visible “Working” spinner. Recent commits also point to faster transcript searching and a clickable jump-to-end indicator for long conversations.

                    The trend is disciplined product hardening: Pi is reducing false-success states, removing broken catalog choices, improving portability, and making lengthy agent sessions easier to navigate. Thank you for listening to Pi Project Update from The Daily FM. See you tomorrow!

                    Source Evidence
                    1. earendil-works/pi: development activity
                      ...s grok-build-0.1 to XAI_BUILTIN_EXCLUDED_MODEL_IDS so the built-in xAI catalog only lists grok-4.3, grok-4.5 and grok-4.6.
                      Files: packages/ai/scripts/generate-models.ts (+3/-2), packages/ai/test/xai-responses.test.ts (+1/-1)
                      
                      #9070 fix(coding-agent): download statically linked musl builds of fd and ripgrep on Linux (merged 2026-09-03)
                      fixes #9033
                      
                      On Linux, `tools-manager.ts` picked the `unknown-linux-gnu` release asset for fd (both arches) and for ripgrep on arm64. Those binaries are dynamically linked against glibc and fail with `No such file or directory` on NixOS and Alpine, so the find/grep tools break for users without fd/rg on PATH.
                      
                      Changes:
                      
                      - `packages/coding-agent/src/utils/tools
                    Sources

                      <- Back to library