diff --git a/src/config/schema.help.ts b/src/config/schema.help.ts index c534cc4097f..e07e3ea6bd1 100644 --- a/src/config/schema.help.ts +++ b/src/config/schema.help.ts @@ -930,6 +930,10 @@ export const FIELD_HELP: Record = { "User-prompt template used for the pre-compaction memory flush turn when generating memory candidates. Use this only when you need custom extraction instructions beyond the default memory flush behavior.", "agents.defaults.compaction.memoryFlush.systemPrompt": "System-prompt override for the pre-compaction memory flush turn to control extraction style and safety constraints. Use carefully so custom instructions do not reduce memory quality or leak sensitive context.", + "agents.defaults.embeddedPi": + "Embedded Pi runner hardening controls for how workspace-local Pi settings are trusted and applied in OpenClaw sessions.", + "agents.defaults.embeddedPi.projectSettingsPolicy": + 'How embedded Pi handles workspace-local `.pi/config/settings.json`: "sanitize" (default) strips shellPath/shellCommandPrefix, "ignore" disables project settings entirely, and "trusted" applies project settings as-is.', "agents.defaults.humanDelay.mode": 'Delay style for block replies ("off", "natural", "custom").', "agents.defaults.humanDelay.minMs": "Minimum delay in ms for custom humanDelay (default: 800).", "agents.defaults.humanDelay.maxMs": "Maximum delay in ms for custom humanDelay (default: 2500).", diff --git a/src/config/schema.labels.ts b/src/config/schema.labels.ts index f7b364590fa..5372bb9cccc 100644 --- a/src/config/schema.labels.ts +++ b/src/config/schema.labels.ts @@ -414,6 +414,8 @@ export const FIELD_LABELS: Record = { "Compaction Memory Flush Soft Threshold", "agents.defaults.compaction.memoryFlush.prompt": "Compaction Memory Flush Prompt", "agents.defaults.compaction.memoryFlush.systemPrompt": "Compaction Memory Flush System Prompt", + "agents.defaults.embeddedPi": "Embedded Pi", + "agents.defaults.embeddedPi.projectSettingsPolicy": "Embedded Pi Project Settings Policy", "agents.defaults.heartbeat.directPolicy": "Heartbeat Direct Policy", "agents.list.*.heartbeat.directPolicy": "Heartbeat Direct Policy", "agents.defaults.heartbeat.suppressToolErrorWarnings": "Heartbeat Suppress Tool Error Warnings", diff --git a/src/config/types.agent-defaults.ts b/src/config/types.agent-defaults.ts index afc65e3daec..38cbea44588 100644 --- a/src/config/types.agent-defaults.ts +++ b/src/config/types.agent-defaults.ts @@ -158,6 +158,16 @@ export type AgentDefaultsConfig = { contextPruning?: AgentContextPruningConfig; /** Compaction tuning and pre-compaction memory flush behavior. */ compaction?: AgentCompactionConfig; + /** Embedded Pi runner hardening and compatibility controls. */ + embeddedPi?: { + /** + * How embedded Pi should trust workspace-local `.pi/config/settings.json`. + * - sanitize (default): apply project settings except shellPath/shellCommandPrefix + * - ignore: ignore project settings entirely + * - trusted: trust project settings as-is + */ + projectSettingsPolicy?: "trusted" | "sanitize" | "ignore"; + }; /** Vector memory search configuration (per-agent overrides supported). */ memorySearch?: MemorySearchConfig; /** Default thinking level when no /think directive is present. */ diff --git a/src/config/zod-schema.agent-defaults.ts b/src/config/zod-schema.agent-defaults.ts index aa39a70978b..3e304361396 100644 --- a/src/config/zod-schema.agent-defaults.ts +++ b/src/config/zod-schema.agent-defaults.ts @@ -96,6 +96,14 @@ export const AgentDefaultsSchema = z }) .strict() .optional(), + embeddedPi: z + .object({ + projectSettingsPolicy: z + .union([z.literal("trusted"), z.literal("sanitize"), z.literal("ignore")]) + .optional(), + }) + .strict() + .optional(), thinkingDefault: z .union([ z.literal("off"),