diff --git a/agents/gsd-planner.md b/agents/gsd-planner.md
index d582c1bb8..1a2f16580 100644
--- a/agents/gsd-planner.md
+++ b/agents/gsd-planner.md
@@ -1007,6 +1007,10 @@ Read the most recent milestone retrospective and cross-milestone trends. Extract
- **Cost patterns** to inform model selection and agent strategy
+
+If `features.global_learnings` is `true`: run `gsd-tools learnings query --tag --limit 5`, prefix matches with `[Prior learning from ]` as weak priors. Project-local decisions take precedence. Skip silently if disabled or no matches. For tags, use PLAN.md frontmatter `tags` field or keywords from the phase objective, comma-separated (e.g. `--tag auth,database,api`).
+
+
Use `phase_dir` from init context (already loaded in load_project_state).
diff --git a/get-shit-done/bin/lib/config.cjs b/get-shit-done/bin/lib/config.cjs
index fe2d7ffe8..fe8929fbf 100644
--- a/get-shit-done/bin/lib/config.cjs
+++ b/get-shit-done/bin/lib/config.cjs
@@ -31,6 +31,8 @@ const VALID_CONFIG_KEYS = new Set([
'hooks.context_warnings',
'features.thinking_partner',
'context',
+ 'features.global_learnings',
+ 'learnings.max_inject',
'project_code', 'phase_naming',
'manager.flags.discuss', 'manager.flags.plan', 'manager.flags.execute',
'response_language',
@@ -338,7 +340,7 @@ function cmdConfigSet(cwd, keyPath, value, raw) {
validateKnownConfigKeyPath(keyPath);
if (!isValidConfigKey(keyPath)) {
- error(`Unknown config key: "${keyPath}". Valid keys: ${[...VALID_CONFIG_KEYS].sort().join(', ')}, agent_skills.`);
+ error(`Unknown config key: "${keyPath}". Valid keys: ${[...VALID_CONFIG_KEYS].sort().join(', ')}, agent_skills., features.`);
}
// Parse value (handle booleans, numbers, and JSON arrays/objects)