Desktop app ignores `askUser: false` from settings.json and offers no way to disable the ask_user tool
Nessuno ha ancora preso questa issue.
- Lingua principale
- Shell
- Stelle
- 11.2k
- Fork
- 1.9k
- Merge medio
- 14h 16m
- PR unite (30g)
- 6
Descrizione
This was generated by AI during triage.
Summary
The desktop app has no way to disable the ask_user tool. The CLI setting askUser: false in ~/.copilot/settings.json is read by the CLI entry point only; the app is a separate host that never consults it and exposes no equivalent toggle, so the same configuration directory yields different agent behavior depending on which client opens the session.
Environment
- GitHub Copilot desktop app v1.0.26
- App-spawned Copilot CLI runtime v1.0.71
- Copilot CLI v1.0.75
- Windows 11
~/.copilot/settings.jsoncontains"askUser": false
Reproduction
- Set
"askUser": falsein~/.copilot/settings.json. - Start
copilotin a terminal and confirm the agent has noask_usertool. - Open the desktop app against the same configuration directory and start any chat or project session.
- Observe that the agent still has
ask_userand uses it.
Expected behavior
One of the following, in order of preference:
- The app honors
askUserfrom~/.copilot/settings.json, matching the CLI. - The app exposes its own setting that maps to the SDK session option
askUserDisabled(ordefaultAgent.excludedTools: ["ask_user"], which the app's own session wire already carries). - The app documents that
askUseris CLI-only, so the setting is not silently inert.
Sanitized evidence
Read-only inspection of the installed binaries:
CLI 1.0.75 app.js
askUserDisabled: (…) || settings.askUser === false # prompt mode
askUserDisabled: !B # interactive mode, B from --ask-user/--no-ask-user
option("--no-ask-user", "Disable the ask_user tool (agent works autonomously without asking questions)")
Desktop app 1.0.26 github.exe
SessionCreateWire fields: availableTools, excludedTools, defaultAgent, … # no askUserDisabled
string "askUser" — no occurrences
chat session tool set (Rust, src-tauri/src/session/core.rs region):
ask_user glob rg skill view web_fetch web_search
~/.copilot/data.dbtablessettingsandapp_statehold no tool-permission oraskUserstate.- The app does read
~/.copilot/config.jsonand~/.copilot/settings.json(for exampleskillDirectories), so the file is in scope for the app; only this key is unhandled.
Observed versus unconfirmed
Observed: askUser: false has no effect in the app, and no app setting, app-state key, or database column controls it.
Unconfirmed: whether a custom agent whose tools: allowlist omits ask_user fully suppresses the tool for a main app session — the SDK types describe CustomAgentConfig.tools as an allowlist, but this was not exercised end to end. Custom instructions can only discourage the tool, not remove it.
Why it matters
Autonomy is a per-user working preference, not a per-client one. Users who deliberately run a no-questions agent lose that guarantee the moment the work moves from the terminal to the app, and the two clients disagree while reading the same configuration directory.
Questions
- Is
askUserintended to remain CLI-only, or should host-independent settings apply to every client that reads~/.copilot? - Would
defaultAgent.excludedToolsbe the preferred app-side mechanism, given the session wire already supports it? - Should settings the app cannot honor be surfaced as inert rather than ignored silently?
Additional context
This was a read-only investigation: binaries, the configuration directory, and a copy of data.db were inspected; nothing was modified.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia in src-tauri/src/session/core.rs e verifica come la sessione desktop costruisce il proprio insieme di strumenti e i campi di SessionCreateWire. Confronta questo percorso con la gestione di askUser da parte della CLI nelle evidenze app.js esaminate. Il lavoro è completato quando l’applicazione rispetta coerentemente askUser: false oppure fornisce e documenta un’impostazione equivalente, e viene verificato che la sessione risultante escluda ask_user.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rust
- Ambito
- cli, desktop, tooling
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100