Comments are threads anchored to ranges of text. They render as chips beside
the page, survive the DOCX round trip, and are readable and writable from the
host.
Reading threads
Each thread carries its root comment, replies, the anchor it points at, and any
suggestions related to it:
Writing
Comment bodies are markdown. Every method returns the new comment’s ID, or
null when the target no longer exists.
Mentions are supported as an optional second argument on each of these.
Panel and selection
There is no built-in comments button — chips render inline, and the panel opens
wherever your own UI decides. See chrome.
A comment can be tied to the suggestions it discusses, which lets a reviewer
resolve the conversation and the edit in one action:
An agent reviewing a document should usually comment rather than rewrite.
The leave_comment tool is the agent-facing equivalent of the above:
leave_comment anchors to text the agent has actually read. Call a read tool
such as read_blocks_from_index first, or the quote will not resolve to a
range in the loaded context.
For products where each thread is its own conversation with the model, the
comments controller runs an agent scoped to one thread:
getState(threadId) returns that thread’s run state, and subscribe()
publishes a map of every in-flight run, so a thread list can show per-thread
progress.