{"version":"1.11.0","versions":{"cli":"1.11.0","desktop":"1.11.0"},"date":"2026-11-13","dateFormatted":"November 13, 2026","url":"https://docs.factory.com/changelog/release-notes#v1.11.0","jsonUrl":"https://docs.factory.com/changelog/releases/1.11.0.json","summary":"Windows command sandboxing, translucent sidebar, external browser for HTML files, and fixes across sessions, hooks and Scripts","surfaces":["cli","app","api"],"changes":[{"type":"fix","surface":"cli","title":"Model region availability","description":"Droid now says when a model is not available in your region and asks you to pick another"},{"type":"feature","surface":"app","title":"Open in external browser","description":"Right-clicking an HTML file link in chat now offers Open in external browser"},{"type":"fix","surface":"app","title":"API key creation messages","description":"The API Keys section now names what blocks creation only once your organization settings have loaded"},{"type":"fix","surface":"cli","title":"Blank session renames","description":"Renaming a session to a blank title is now refused instead of leaving the session untitled"},{"type":"fix","surface":"cli","title":"Script runs at session stop","description":"Stopping a session now reports only the Script runs still running instead of repeating one that ended"},{"type":"fix","surface":"app","title":"Source control connection errors","description":"A failed source control check now names the connection and host, and GitLab Cloud repository lists refresh again"},{"type":"improvement","surface":"cli","title":"Session archiving speed","description":"Archiving a session no longer reads every session on your machine, so it finishes faster"},{"type":"feature","surface":"cli","title":"Windows command sandbox","description":"Sandboxing now covers commands, hooks, and connector servers on Windows 11 hosts that support it"},{"type":"fix","surface":"cli","title":"Session titles with special characters","description":"A session title containing a null character now saves instead of failing"},{"type":"fix","surface":"cli","title":"Task rows in transcripts","description":"A Task row now ends instead of staying Running when a running Task absorbs or declines your message"},{"type":"improvement","surface":"cli","title":"Hook result handling","description":"Hook exit codes and JSON output now mean the same thing on every hook event"},{"type":"fix","surface":"cli","title":"Stopping an exec run","description":"Interrupting an exec run now ends the turn instead of continuing after the signal"},{"type":"fix","surface":"app","title":"Archiving an open session","description":"Archiving a session while it opens no longer loads it, and a restored session stays visible"},{"type":"fix","surface":"app","title":"Autonomy and mode shortcuts","description":"Ctrl+L and Shift+Tab now do nothing while a session's settings are still loading"},{"type":"improvement","surface":"api","title":"Public API reference coverage","description":"The public API reference now documents six more operations and the errors each can return"},{"type":"fix","surface":"cli","title":"Stopping a Script with hooks","description":"Stopping Droid no longer leaves later file edits waiting on a notification hook from a Script"},{"type":"fix","surface":"cli","title":"Organization policy on credential errors","description":"A credential Droid cannot read no longer drops your organization settings as if you signed out"},{"type":"fix","surface":"cli","title":"Pending questions across clients","description":"A question Droid no longer waits on now closes everywhere instead of staying answerable"},{"type":"fix","surface":"cli","title":"Background Tasks in Script","description":"A Script now fails when a background Task it launched was refused instead of reporting success"},{"type":"fix","surface":"app","title":"Quoting a streaming reply","description":"A reply that starts with a code block can now be quoted and copied while it streams"},{"type":"fix","surface":"cli","title":"Model fallback notices","description":"A notice that your session moved to another model now appears only in that session"},{"type":"security","surface":"cli","title":"Upfront Script approvals","description":"An upfront approval no longer covers a nested command once your autonomy level or ask rules refuse it"},{"type":"fix","surface":"cli","title":"Script starts on Windows","description":"A Script no longer fails as already running on Windows when nothing else holds its lock"},{"type":"feature","surface":"app","title":"Translucent sidebar setting","description":"Appearance settings now offer a translucent sidebar on macOS and Windows 11"},{"type":"improvement","surface":"cli","title":"Image and PDF reads","description":"A Script's image or PDF read now records one line naming its type and size"},{"type":"fix","surface":"cli","title":"Hook context in long sessions","description":"Context from SessionStart and PostToolUse hooks now survives compaction and a hook that stops the batch"}],"contentText":"New features\n\n- Open in external browser - Right-clicking an HTML file link in chat now offers Open in external browser\n- Windows command sandbox - Sandboxing now covers commands, hooks, and connector servers on Windows 11 hosts that support it\n- Translucent sidebar setting - Appearance settings now offer a translucent sidebar on macOS and Windows 11\n\nImprovements\n\n- Session archiving speed - Archiving a session no longer reads every session on your machine, so it finishes faster\n- Hook result handling - Hook exit codes and JSON output now mean the same thing on every hook event\n- Public API reference coverage - The public API reference now documents six more operations and the errors each can return\n- Image and PDF reads - A Script's image or PDF read now records one line naming its type and size\n\nBug fixes\n\n- Model region availability - Droid now says when a model is not available in your region and asks you to pick another\n- API key creation messages - The API Keys section now names what blocks creation only once your organization settings have loaded\n- Blank session renames - Renaming a session to a blank title is now refused instead of leaving the session untitled\n- Script runs at session stop - Stopping a session now reports only the Script runs still running instead of repeating one that ended\n- Source control connection errors - A failed source control check now names the connection and host, and GitLab Cloud repository lists refresh again\n- Session titles with special characters - A session title containing a null character now saves instead of failing\n- Task rows in transcripts - A Task row now ends instead of staying Running when a running Task absorbs or declines your message\n- Stopping an exec run - Interrupting an exec run now ends the turn instead of continuing after the signal\n- Archiving an open session - Archiving a session while it opens no longer loads it, and a restored session stays visible\n- Autonomy and mode shortcuts - Ctrl+L and Shift+Tab now do nothing while a session's settings are still loading\n- Stopping a Script with hooks - Stopping Droid no longer leaves later file edits waiting on a notification hook from a Script\n- Organization policy on credential errors - A credential Droid cannot read no longer drops your organization settings as if you signed out\n- Pending questions across clients - A question Droid no longer waits on now closes everywhere instead of staying answerable\n- Background Tasks in Script - A Script now fails when a background Task it launched was refused instead of reporting success\n- Quoting a streaming reply - A reply that starts with a code block can now be quoted and copied while it streams\n- Model fallback notices - A notice that your session moved to another model now appears only in that session\n- Script starts on Windows - A Script no longer fails as already running on Windows when nothing else holds its lock\n- Hook context in long sessions - Context from SessionStart and PostToolUse hooks now survives compaction and a hook that stops the batch\n\nSecurity\n\n- Upfront Script approvals - An upfront approval no longer covers a nested command once your autonomy level or ask rules refuse it"}