diff --git a/.changeset/ask-user-question-forms.md b/.changeset/ask-user-question-forms.md
new file mode 100644
index 0000000..9ba1f9e
--- /dev/null
+++ b/.changeset/ask-user-question-forms.md
@@ -0,0 +1,5 @@
+---
+"@jmfederico/pi-web": patch
+---
+
+Add an `ask_user` session tool that lets agents post structured question sets as one browser form. Agents end their run while the form waits; users can submit full or partial answers, unanswered questions are reported explicitly, pending forms survive browser and web/API reconnects, and closed forms remain readable in the transcript. Disable the tool with `askUser: false` or `PI_WEB_ASK_USER=false`.
diff --git a/docs/config.html b/docs/config.html
index cb53e8a..fd57961 100644
--- a/docs/config.html
+++ b/docs/config.html
@@ -167,13 +167,13 @@
Environment overrides include PI_WEB_HOST, PI_WEB_PORT / PORT,
PI_WEB_ALLOWED_HOSTS, PI_WEB_MAX_UPLOAD_BYTES, PI_WEB_AGENT_COMMAND,
PI_WEB_AGENT_DIR, PI_WEB_AGENT_SESSION_DIR, PI_CODING_AGENT_DIR /
- PI_CODING_AGENT_SESSION_DIR for Pi compatibility, PI_WEB_SPAWN_SESSIONS, and
- PI_WEB_SUBSESSIONS.
+ PI_CODING_AGENT_SESSION_DIR for Pi compatibility, PI_WEB_SPAWN_SESSIONS,
+ PI_WEB_SUBSESSIONS, and PI_WEB_ASK_USER.
host / port: restart the gateway web/API service or process.maxUploadBytes: restart both the web/API process and the session daemon on that machine.agent.command / agent.dir / spawnSessions / subsessions: restart the session daemon on that machine.agent.command / agent.dir / spawnSessions / subsessions / askUser: restart the session daemon on that machine.pathAccess: applies on the next request; existing file views may need a browser refresh.uploads.defaultFolder: applies to newly opened Files upload dialogs and new direct drag/drop batches after config/workspace refresh.plugins: reload the browser tab after changing PI WEB plugin enablement.spawnSessionsaskUserPI_WEB_ASK_USERplugins.<id>.enabled, plugins.<id>.settingsEnvironment override: PI_WEB_SUBSESSIONS=0|1|true|false.
askUser and ask_user
+ askUser controls whether agents receive the core ask_user tool. It defaults to
+ true; set it to false, or set PI_WEB_ASK_USER=false, to remove the
+ tool. The environment override accepts 0|1|true|false and takes precedence over the config file.
+
+ The tool accepts one set of 1–20 questions. Each question has a unique id, its
+ question text, optional supporting detail, up to 12 options with stable values and
+ user-facing labels, and optional allowOther and multiple flags. A question must
+ offer at least one option or allow free text. No question is required: the user may leave any of them
+ unanswered.
+
+ Calling ask_user posts the whole set as one browser form and ends the current agent run
+ instead of waiting for the user. The open form is owned by the session daemon, so it survives a browser
+ disconnect, browser reload, or web/API restart while that daemon keeps running. When the user submits,
+ the answers arrive as a follow-up that wakes the session; each question is reported with its selected
+ option values or free text, or explicitly as unanswered.
+
+ PI WEB confirms a partial submission before sending it and names the unanswered questions. Only one ask
+ can be open per session: a later ask_user call supersedes the earlier one, reports that fact
+ and its unanswered questions to the model, and turns the earlier card into a read-only transcript record.
+ Submitted and cancelled asks likewise remain readable in the transcript.
+
askUser or after
+ upgrading PI WEB to a version that introduces this tool. For the systemd user service, run
+ systemctl --user restart pi-web-sessiond.
+