Files
pi-toolkit/settings.example.json
T
joakimp 7ee865c8f6 settings: give pi-fork a capability floor (extensions: [])
A fork child inherits the parent's whole session branch by design, and has
twice written to the shared palace under the parent's identity. extensions: []
runs children with --no-extensions; the mempalace bridge is an extension, so
the write path is gone by construction rather than by instruction. Costs forks
their palace search and recall; set to null to restore normal loading.
2026-09-06 20:40:02 +02:00

33 lines
2.7 KiB
JSON

{
"_comment": "Template for ~/.pi/agent/settings.json. Copy to that path and adjust for your region/account — this file is NOT symlinked by install.sh because pi rewrites settings.json at runtime (lastChangelogVersion bumps), which would dirty the repo. This template exists so a fresh machine can start pi without --model by copying + editing.",
"_comment_models": "The 'eu.' prefix on Bedrock model IDs is an inference-profile prefix tied to the AWS region. Must match your AWS_REGION. For us-east use 'us.anthropic.*'; for bare Anthropic provider (non-Bedrock) use the raw 'anthropic:claude-*' IDs. Run `pi --list-models` to see what your credentials can actually invoke.",
"defaultProvider": "amazon-bedrock",
"defaultModel": "eu.anthropic.claude-opus-5",
"enabledModels": [
"eu.anthropic.claude-opus-5",
"eu.anthropic.claude-sonnet-5",
"eu.anthropic.claude-opus-4-8",
"eu.anthropic.claude-haiku-4-5-20251001-v1:0"
],
"observational-memory": {
"model": {
"provider": "amazon-bedrock",
"id": "eu.anthropic.claude-haiku-4-5-20251001-v1:0"
},
"debugLog": false
},
"pi-fork": {
"_comment_extensions": "extensions:[] makes every fork child run with `pi --no-extensions`. This is a CAPABILITY FLOOR, not a style preference: the mempalace bridge is a pi EXTENSION, so with [] a fork physically cannot file drawers or diary entries under your identity. Measured on mbp-m1-2020 2026-09-01 and 2026-09-06: forks ignored their brief, answered in the user's voice, fabricated self-referential measurements, and one filed a diary entry as agent_name=pi (landing in wing_pi, where a wing-scoped diary_read never sees it). Root cause is upstream and by design, not a bug to wait out: the child is handed getHeader()+getBranch(), i.e. the WHOLE active session branch, with the brief appended as the final user message and the system prompt untouched (pi-fork src/index.ts) - so in a long session the parent narrative outweighs the task. Proven by control: the SAME model as the 'fast' profile below (haiku, thinking off) obeyed the identical brief perfectly when run as `pi -p --mode json --session-id <fresh> --no-extensions`, i.e. with no inherited context. COST of []: no palace search and no recall inside a fork. Set to null to restore normal extension loading.",
"extensions": [],
"defaultEffort": "balanced",
"effortProfiles": {
"fast": { "provider": "amazon-bedrock", "id": "eu.anthropic.claude-haiku-4-5-20251001-v1:0", "thinking": "off" },
"balanced": { "provider": "amazon-bedrock", "id": "eu.anthropic.claude-sonnet-5", "thinking": "low" },
"deep": { "provider": "amazon-bedrock", "id": "eu.anthropic.claude-opus-5", "thinking": "high" }
}
}
}