@taterdoge/pi-remember-model
Persist the last selected model and each model's thinking level to Pi's settings.json.
Package details
Install @taterdoge/pi-remember-model from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@taterdoge/pi-remember-model- Package
@taterdoge/pi-remember-model- Version
0.1.3- Published
- Oct 21, 2026
- Downloads
- 321/mo · 19/wk
- Author
- taterdoge
- License
- MIT
- Types
- extension
- Size
- 11.3 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@taterdoge/pi-remember-model
Pi extension that persists the last selected model and each model's thinking level to Pi's global settings.json, so every new session starts where you left off.
Install
pi install npm:@taterdoge/pi-remember-model
Or try without installing:
pi -e npm:@taterdoge/pi-remember-model
How it works
- On model selection, writes
defaultProvideranddefaultModelto the global settings file (~/.pi/agent/settings.json, or$PI_CODING_AGENT_DIR/settings.json) - On thinking level selection, writes a per-model entry to
modelThinkingLevels, keyed"provider/modelId"— Pi's own setting, so a level one model cannot support never leaks into another model. Pi's startup resolver reads this map, so a new session opens on the level you last used for its model - On model selection, re-applies that model's level with
pi.setThinkingLevel(): Pi keeps its own in-memory copy ofmodelThinkingLevelsand never picks up a mid-session write, so switching back to a model needs that nudge - Existing settings keys are preserved (read-merge-write); a missing or invalid file is started fresh
- Session-restore events (
source: "restore") are ignored, so merely opening an old session never rewrites your default defaultThinkingLevelis never written: it is the global fallback for every model
Files
Everything goes into Pi's own global settings — the same keys Pi reads at startup:
{
"defaultProvider": "anthropic",
"defaultModel": "claude-opus-4-6",
"modelThinkingLevels": {
"anthropic/claude-opus-4-6": "xhigh",
"openai/gpt-5": "low"
}
}
modelThinkingLevels is the same map /settings edits and Pi's startup resolver reads, so /settings and this extension stay in sync instead of keeping two copies.
Upgrading from 0.1.2: that release kept levels in ~/.pi/agent/extensions/pi-remember-model/thinking-levels.json, which Pi never read. Merge those entries into modelThinkingLevels by hand (or re-pick the levels once); the file is no longer used.
pi.setThinkingLevel() has existed since Pi 0.76. On any supported Pi the extension remembers the model and re-applies its level when you switch back.
Note: Pi ≥ 0.76 already reads modelThinkingLevels at startup, but only /settings writes it, so switching a level in-session (Enter in the thinking selector, which is session-only, or Ctrl+S, which sets the global default for every model) leaves no per-model record. This extension fills that gap.