{"version":"0.231.0","versions":{"cli":"0.231.0","desktop":"0.188.0"},"date":"2026-10-01","dateFormatted":"October 1, 2026","url":"https://docs.factory.com/changelog/release-notes#v0.231.0","jsonUrl":"https://docs.factory.com/changelog/releases/0.231.0.json","summary":"Transcript history paging, legacy models toggle, side chat shortcuts, template refresh, plus terminal and app fixes","surfaces":["cli","app","enterprise"],"changes":[{"type":"fix","surface":"app","title":"Session settings at launch","description":"Launching a session on a Droid Computer now keeps the model and settings you chose (app)"},{"type":"fix","surface":"cli","title":"Readable model errors","description":"A model that cannot be served now reports it is temporarily unavailable instead of an empty error"},{"type":"improvement","surface":"app","title":"Side chat keyboard shortcuts","description":"Side chat now takes multi-line messages and keeps its keys from acting on the main session (app)"},{"type":"fix","surface":"cli","title":"Workflow task identifiers","description":"Droid Shield no longer flags a workflow task identifier in a commit as a secret"},{"type":"fix","surface":"enterprise","title":"Service account session privacy","description":"Sessions you do not operate on a service account's computer stay out of your list and open read-only"},{"type":"fix","surface":"app","title":"Starting local sessions","description":"You can now start a local session without waiting for the template list to load (app)"},{"type":"fix","surface":"cli","title":"Questions written as text","description":"A question Droid writes as raw markup now appears as a question you can answer"},{"type":"fix","surface":"cli","title":"Interrupted reply handling","description":"A reply cut off mid-stream is now discarded instead of running unfinished tool calls"},{"type":"fix","surface":"cli","title":"Resumed session failures","description":"A resumed session no longer fails when earlier reasoning cannot be reused"},{"type":"fix","surface":"enterprise","title":"Self-hosted host errors","description":"Setting up a self-hosted GitHub or GitLab host now shows why its hostname failed to resolve"},{"type":"fix","surface":"app","title":"Session titles from Slack","description":"A session started from Slack no longer shows thread markup in its title"},{"type":"fix","surface":"app","title":"Slack image attachments","description":"Images attached in Slack no longer add a raw file listing to the conversation"},{"type":"improvement","surface":"app","title":"Compression progress spinner","description":"A spinner now shows while a session's history compresses (app)"},{"type":"improvement","surface":"app","title":"Scheduled template refresh","description":"Droid Computer templates now refresh on their own once they fall out of date"},{"type":"fix","surface":"app","title":"Sidebar section width","description":"Expanded sidebar sections no longer run past the sidebar edge and hide project actions (app)"},{"type":"improvement","surface":"cli","title":"Legacy models toggle","description":"The model picker now groups older models under a legacy toggle and marks them clearly"},{"type":"improvement","surface":"cli","title":"Faster first response","description":"Droid now starts answering your first message sooner because setup work no longer blocks it"},{"type":"fix","surface":"cli","title":"Scoped Git secret scans","description":"Droid Shield now checks only the content a Git command includes, so fewer clean commands are blocked"},{"type":"fix","surface":"cli","title":"Custom model tool calls","description":"Droid no longer drops a tool call when a custom model reports several at once"},{"type":"fix","surface":"cli","title":"MCP server recovery","description":"An MCP server that exited now restarts on the next call instead of failing"},{"type":"fix","surface":"cli","title":"Dropped streamed replies","description":"Droid no longer drops a streamed reply or its error when the stream is compactly formatted"},{"type":"security","surface":"app","title":"Private Slack channel names","description":"Slack channel settings no longer show private channel names to members who are not in them"},{"type":"improvement","surface":"cli","title":"Transcript history paging","description":"Alt or Option with the arrow keys now pages a session's full saved history in the terminal"},{"type":"fix","surface":"app","title":"Locked settings while provisioning","description":"The model and autonomy controls are now disabled while a Droid Computer provisions from a template (app)"}],"contentText":"Improvements\n\n- Side chat keyboard shortcuts - Side chat now takes multi-line messages and keeps its keys from acting on the main session (app)\n- Compression progress spinner - A spinner now shows while a session's history compresses (app)\n- Scheduled template refresh - Droid Computer templates now refresh on their own once they fall out of date\n- Legacy models toggle - The model picker now groups older models under a legacy toggle and marks them clearly\n- Faster first response - Droid now starts answering your first message sooner because setup work no longer blocks it\n- Transcript history paging - Alt or Option with the arrow keys now pages a session's full saved history in the terminal\n\nBug fixes\n\n- Session settings at launch - Launching a session on a Droid Computer now keeps the model and settings you chose (app)\n- Readable model errors - A model that cannot be served now reports it is temporarily unavailable instead of an empty error\n- Workflow task identifiers - Droid Shield no longer flags a workflow task identifier in a commit as a secret\n- Service account session privacy - Sessions you do not operate on a service account's computer stay out of your list and open read-only\n- Starting local sessions - You can now start a local session without waiting for the template list to load (app)\n- Questions written as text - A question Droid writes as raw markup now appears as a question you can answer\n- Interrupted reply handling - A reply cut off mid-stream is now discarded instead of running unfinished tool calls\n- Resumed session failures - A resumed session no longer fails when earlier reasoning cannot be reused\n- Self-hosted host errors - Setting up a self-hosted GitHub or GitLab host now shows why its hostname failed to resolve\n- Session titles from Slack - A session started from Slack no longer shows thread markup in its title\n- Slack image attachments - Images attached in Slack no longer add a raw file listing to the conversation\n- Sidebar section width - Expanded sidebar sections no longer run past the sidebar edge and hide project actions (app)\n- Scoped Git secret scans - Droid Shield now checks only the content a Git command includes, so fewer clean commands are blocked\n- Custom model tool calls - Droid no longer drops a tool call when a custom model reports several at once\n- MCP server recovery - An MCP server that exited now restarts on the next call instead of failing\n- Dropped streamed replies - Droid no longer drops a streamed reply or its error when the stream is compactly formatted\n- Locked settings while provisioning - The model and autonomy controls are now disabled while a Droid Computer provisions from a template (app)\n\nSecurity\n\n- Private Slack channel names - Slack channel settings no longer show private channel names to members who are not in them"}