DGC v0.48.4 is out
Navigate
Install DGC
DGC v0.48.4Edit on GitHub ↗
Using DGC/Questions

when the model needs you to pick, not guess

Questions

#

Some choices have no safe default: a trade-off, or a requirement the request leaves open. The model asks with propose_options instead of a numbered list in prose. It can ask 1–4 questions at once, each with 2–6 options (2–4 is advised). The option it recommends comes first, with its label ending (Recommended) and a one-sentence description. DGC never reorders the list. Every client adds free text ("Something else…"); an "Other" option the model adds is dropped. Custom answers are bounded to 4,096 characters.

Closing a question (× or Esc) is its own outcome: DGC saves whatever you already answered, ends the turn with no further model request, keeps queued prompts and monitors, and pauses a standing goal that was waiting on the answer. Stop still means stop. Answered questions stay in the transcript as Asked 2 questions (or Asked · SQLite file) inside the step, after a reload or resume as well.

In the editor

#

The question docks inside the composer in place of the text box. Stop, the mode and model pickers and the context meter stay; the unsent draft comes back when the question closes. Each option is a stacked card. The recommended option is preselected — checked, highlighted, focused — so Enter, a click on it, or Continue takes it. Skip sits beside Continue. Nothing is sent without your action. Keys that arrive within 400 ms of the question opening are ignored. If the composer still has focus on a draft, it says "Press Tab to answer" instead of stealing focus.

When DGC asks several questions in one card, your pick stays marked for a moment, then the next question streams in and its options appear one after another; for a moment after the card moves on, a second click in the same spot or a held-down key can't answer the new question by accident. Answering the last question doesn't send: the card reads "all answered" and focuses Submit, so you can page back and check or change any answer first. A single question still sends on one click. With reduced motion on, the next question simply appears.

In the terminal

#

The full-screen app shows one line per option, the focused option's description under the question, and the cursor on the recommended option. Digits pick, Space toggles a multi-select option, "Skip this question" skips, ←/→ or Tab change question.

The classic prompt uses an arrow menu per question starting on the recommended option, with "Something else…" and "Skip this question" rows. Multi-select takes comma-separated numbers. Several questions get a review list whose Submit skips anything unanswered.

Who is not asked

#

Sub-agents and dgc -p are not offered the picker: a sub-agent returns the decision to the main agent with its recommendation. Subscription CLI turns keep the vendor's own question interface. A turn a background event started, and later wake turns after you have already answered a round, are told to list the choices as a numbered list instead of claiming the picker is missing.

Full-auto auto-approves tool calls; it does not hide the options picker. It leaves propose_options out of ordinary coding turns, except on a turn where you explicitly ask to choose ("propose me options", "let me choose", "ask me to pick", "show me a test option picker"). That turn gets the native picker in every permission mode — the model must call propose_options, not mock it in Markdown or ask you to reply with a number. In full-auto it is withdrawn again once one round has been asked, so the rest of the turn (a whole goal run) goes on unattended. Only text you type counts: attached files, editor context, and a goal's objective never re-open the picker. A sentence that describes software ("the dropdown should let me choose a region") is not an ask.

A question that does not stop the turn

#

The picker above is a decision: DGC stops and waits, because it cannot sensibly carry on without your answer. An open question is the other case — the model needs a fact it has no way to work out, like which of your machines you meant or what to call something, and there is plenty of the task it can get on with meanwhile. So it asks, and keeps working.

It arrives as a card in the conversation rather than over the composer. Type an answer and press Enter, take one of the suggested answers if any fit, or Skip. Your answer is quoted back with the question above it, as an ordinary message, so a reopened session shows it the way it happened.

Leave it and it folds to a single line reading Answer question; click that whenever you like and it opens again. Pointing at the card, or typing in it, stops it folding under you.

The question outlives the turn. The model finishing its reply does not close it: the card stays where it is, with its options, and answering it a minute later works — the answer starts a new turn with the question quoted above it, exactly as it reads when you answer while the turn is running. The model also ends that reply by repeating the question and every option it offered, so the choice is readable even in a reopened session where no card is drawn.

It closes when you move on. The next message you send that is not an answer retires the card — the question and its options stay in the transcript as a record of what was offered — and the model is told, in that same turn, that the card went unanswered and that your message may be the answer. Skip closes it immediately instead, and says plainly that you declined.

Words you had started typing are yours, and retiring the card used to take them with it. In the editor they come back: whatever was in the answer box is appended to the composer on its own line, ready to send. Not on an explicit Skip — that is you deciding not to answer, and putting the abandoned text back would undo the dismissal you just made.

The model may have at most two open at once, it is never offered in a sub-agent or in a non-interactive dgc -p run, and asking a question never raises a permission prompt — nothing is changed by asking.

Documentation