Kun's Pi Agent Config - by Kun Chen - Kun's Field Notes
Kun's Field Notes
SubscribeSign in
Kun's Pi Agent Config<br>Minimal, practical, and elegant
Kun Chen<br>Aug 01, 2026
Share
It’s the 67th time I got asked how I’ve configured my Pi agent - it’s time to write it down and share! This is not going to be “here’s 100 fancy tricks you can do with Pi”. This is “here’s what I actually use and can’t live without.”<br>When and why do I use Pi
I use Pi heavily for any model that’s not Claude, because Anthropic banned 3rd party harnesses from using their subscription quota. There are some workarounds, but none is perfect - so for Claude I’m stuck with Claude Code. For any other LLM, I pretty much only use Pi at this point, barring some exceptions.<br>I pick Pi because it’s provider-neutral, minimal, and deeply customizable. I believe this is how agent harnesses should be, because the AI models are constantly advancing, and the harness needs to be flexible enough to evolve with them.<br>Practical field notes on agentic engineering, solo building, and what the frontier of software development looks like. Former L8 engineer at Meta, Microsoft, Atlassian.
Subscribe
Main settings
~/.pi/agent/settings.json<br>"images": {<br>"blockImages": false<br>},<br>"terminal": {<br>"showImages": false<br>},<br>"hideThinkingBlock": true,<br>"quietStartup": true,<br>"theme": "rose-pine-moon",<br>"steeringMode": "all",<br>"followUpMode": "all",<br>"collapseChangelog": true,<br>"packages": [<br>"npm:pi-web-access@0.14.0",<br>"npm:@ryan_nookpi/pi-extension-codex-fast-mode@0.2.6",<br>"git:github.com/algal/pi-openai-server-compaction@c6d593087709e9481223dc6c6c2269b371b5e055"
Some of these are personal preferences, but a few important ones -<br>hideThinkingBlock helps create a less noisy terminal. I don’t find any value in watching what the LLM is thinking in its own head.
steeringMode=all is a no-brainer because if I sent multiple steering prompts I of course want all of them to go out asap.
followUpMode=all is important to me because I like to keep queuing follow up prompts when the model is working. Having all of the queued prompts sent all at once is a lot more efficient than letting them go out one by one.
3rd party extensions
You can see from the settings file above I only have a few 3rd party extensions. I’ll quickly explain what they are and why I use them here.<br>pi-web-access is a no-brainer because the stock Pi is so minimal that it doesn’t even have the ability to search and browse web content.
pi-extension-codex-fast-mode is what allows me to activate fast mode when using gpt models. It’s a very simple extension that just has an on/off toggle to control whether requests to Codex backend activates fast mode. Fast mode uses 2x tokens for 2.5x speed, so use it with the tradeoff in mind.
pi-openai-server-compaction makes Pi use OpenAI’s secret sauce “server side compaction” whenever the context window is too long and needs to be compacted. The server side compaction is what Codex uses by default, and is what makes Codex so good at long running tasks despite gpt models have a short context window there.
Model overrides
~/.pi/agent/models.json<br>"providers": {<br>"openai-codex": {<br>"modelOverrides": {<br>"gpt-5.6-luna": {<br>"contextWindow": 272000<br>},<br>"gpt-5.6-sol": {<br>"contextWindow": 272000<br>},<br>"gpt-5.6-terra": {<br>"contextWindow": 272000
This is an interesting one. OpenAI’s gpt models actually can support longer context requests, but whenever the request goes above 272k input tokens, it will double the cost. See https://developers.openai.com/api/docs/pricing for details.<br>The settings above makes Pi set the context window length for those models at 272k, so whenever the request becomes larger than that, it will do compaction and dial it back down. This helps avoid draining our quota or API cost more quickly than we want.<br>Color theme
~/.pi/agent/themes/rose-pine-moon.json<br>"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",<br>"name": "rose-pine-moon",<br>"vars": {<br>"base": "#232136",<br>"surface": "#2a273f",<br>"overlay": "#393552",<br>"muted": "#6e6a86",<br>"subtle": "#908caa",<br>"text": "#e0def4",<br>"love": "#eb6f92",<br>"gold": "#f6c177",<br>"rose": "#ea9a97",<br>"pine": "#3e8fb0",<br>"foam": "#9ccfd8",<br>"iris": "#c4a7e7",<br>"highlightLow": "#2a283e",<br>"highlightMed": "#44415a",<br>"highlightHigh": "#56526e"<br>},<br>"colors": {<br>"accent": "iris",<br>"border": "overlay",<br>"borderAccent": "iris",<br>"borderMuted": "muted",<br>"success": "foam",<br>"error": "love",<br>"warning": "gold",<br>"muted": "subtle",<br>"dim": "muted",<br>"text": "text",<br>"thinkingText": "subtle",<br>"selectedBg": "highlightMed",<br>"userMessageBg": "surface",<br>"userMessageText": "text",<br>"customMessageBg": "surface",<br>"customMessageText": "text",<br>"customMessageLabel": "iris",<br>"toolPendingBg": "highlightLow",<br>"toolSuccessBg": "surface",<br>"toolErrorBg": "surface",<br>"toolTitle": "foam",<br>"toolOutput": "text",<br>"mdHeading": "iris",<br>"mdLink": "foam",<br>"mdLinkUrl": "subtle",<br>"mdCode": "rose",<br>"mdCodeBlock":...