Summary
The Copilot Subconscious background sidekick (the per-prompt memory "voting" agent, internal flag copilot_cli_subconscious) keeps spawning on every user prompt even when Copilot Memory is fully disabled — both via /memory off and settings.json "memory": false. It should not run at all when memory is off.
This is new behavior that appeared in a recent release. It adds a background session per prompt, fires vote_memory/inbox activity, and (when an extension registers an onUserPromptSubmitted hook) the sidekick session re-runs that hook and its output bleeds into the single interactive terminal — producing a visible duplicate of the extension's hook output on every turn. It also intermittently makes the input line feel frozen while the extra background turn runs.
Environment
- Copilot CLI 1.0.64-0 (win32-x64), Windows 11, PowerShell 7.
~/.copilot/settings.json: "memory": false, "experimental": true.
/memory show → Status: disabled (via /memory off).
Steps to reproduce
- Run
/memory off and confirm /memory show reports disabled.
- (Optionally) also set
"memory": false in ~/.copilot/settings.json.
- Start a session and send any normal prompt.
- Open
/sidekicks.
Expected: No memory/Subconscious sidekicks run, because memory is disabled.
Actual: /sidekicks lists multiple Copilot Subconscious [background] entries — one per prompt. The session event log shows a parallel sidekick-subconscious-agent-<timestamp> session mirroring each prompt ("Current user request: …"), running the same prompt hooks, and emitting send_inbox / vote_memory activity. Inbox from Copilot Subconscious notifications keep arriving.
Why this is a regression
/memory off is documented as persistent (added 1.0.49) and the store/retrieve memory tools are gated on the memory-enabled state ("The store_memory tool is only included when memory is enabled for the user", 0.0.385). The Subconscious / vote_memory sidekick path is not honoring that same disabled state — it spawns regardless. Recent memory-area changes (e.g. vote_memory throttling in 1.0.55, SDK session-memory config in 1.0.62) suggest this path is gated by the server-pushed experimental flight (copilot_cli_subconscious, availability team) independent of the user's /memory setting.
Expected fix
When memory is disabled for the user (via /memory off or settings.memory: false), the Subconscious background sidekick (copilot_cli_subconscious) must not spawn, regardless of the server experimental flight assignment. The user-facing memory toggle should be the authoritative off switch.
Current workaround (for others hitting this)
Set the env override the CLI itself uses, at user scope, then restart:
COPILOT_EXP_COPILOT_CLI_SUBCONSCIOUS=false
(The resolver isCopilotSubconsciousEnabled() honors COPILOT_EXP_<FLAG> overrides; the CLI sets this same var to true when spawning the detached rem-agent.) /memory off alone does not stop it.
Additional note
Every release seems to flip or introduce a new default in this area (experimental gate resetting, memory sidekick spawning). A single, authoritative, user-respecting off switch for memory — that the per-prompt Subconscious also obeys — would prevent this recurring breakage.
Summary
The Copilot Subconscious background sidekick (the per-prompt memory "voting" agent, internal flag
copilot_cli_subconscious) keeps spawning on every user prompt even when Copilot Memory is fully disabled — both via/memory offandsettings.json"memory": false. It should not run at all when memory is off.This is new behavior that appeared in a recent release. It adds a background session per prompt, fires
vote_memory/inbox activity, and (when an extension registers anonUserPromptSubmittedhook) the sidekick session re-runs that hook and its output bleeds into the single interactive terminal — producing a visible duplicate of the extension's hook output on every turn. It also intermittently makes the input line feel frozen while the extra background turn runs.Environment
~/.copilot/settings.json:"memory": false,"experimental": true./memory show→Status: disabled (via /memory off).Steps to reproduce
/memory offand confirm/memory showreports disabled."memory": falsein~/.copilot/settings.json./sidekicks.Expected: No memory/Subconscious sidekicks run, because memory is disabled.
Actual:
/sidekickslists multipleCopilot Subconscious [background]entries — one per prompt. The session event log shows a parallelsidekick-subconscious-agent-<timestamp>session mirroring each prompt ("Current user request: …"), running the same prompt hooks, and emittingsend_inbox/vote_memoryactivity.Inbox from Copilot Subconsciousnotifications keep arriving.Why this is a regression
/memory offis documented as persistent (added 1.0.49) and the store/retrieve memory tools are gated on the memory-enabled state ("The store_memory tool is only included when memory is enabled for the user", 0.0.385). The Subconscious / vote_memory sidekick path is not honoring that same disabled state — it spawns regardless. Recent memory-area changes (e.g.vote_memorythrottling in 1.0.55, SDK session-memory config in 1.0.62) suggest this path is gated by the server-pushed experimental flight (copilot_cli_subconscious, availabilityteam) independent of the user's/memorysetting.Expected fix
When memory is disabled for the user (via
/memory offorsettings.memory: false), the Subconscious background sidekick (copilot_cli_subconscious) must not spawn, regardless of the server experimental flight assignment. The user-facing memory toggle should be the authoritative off switch.Current workaround (for others hitting this)
Set the env override the CLI itself uses, at user scope, then restart:
(The resolver
isCopilotSubconsciousEnabled()honorsCOPILOT_EXP_<FLAG>overrides; the CLI sets this same var totruewhen spawning the detached rem-agent.)/memory offalone does not stop it.Additional note
Every release seems to flip or introduce a new default in this area (experimental gate resetting, memory sidekick spawning). A single, authoritative, user-respecting off switch for memory — that the per-prompt Subconscious also obeys — would prevent this recurring breakage.