Modal 1.3.5
- We've added a modal changelog CLI for retrieving changelog entries with a flexible query interface (e.g. modal changelog --since=1.2, modal changelog --since=2025-12-01, modal changelog --newer). We expect that this will be a useful way to surface information about new features to coding agents.
Also shipped Mar 3, 2026Modal in March 2026 →
Deploy Preview screenshots in agent runs
Starting today, all completed agent runs show a screenshot of your Deploy Preview. This makes it easier to quickly see the result of an agent run and keep track of agent run sessions without opening the full preview.
Gemini 3.1 Flash-Lite Preview now available in AI Gateway
Google’s Gemini 3.1 Flash-Lite Preview is now available through AI Gateway. You can call this model from Netlify Functions without configuring API keys; the AI Gateway provides the connection to Google for you.
Actions - Transaction Metadata - GA
We are excited to announce that __Actions Transaction Metadata__ is now GA. This feature allows you to set, share, and access, custom data between Actions run in the same `post-login` execution.
Workflows, Workers - Workflows step limit increased to 25,000 steps per instance
Each Workflow on Workers Paid now supports 10,000 steps by default, configurable up to 25,000 steps in your wrangler.jsonc file: { "workflows" : [ { "name" : "my-workflow" , "binding" : "MY_WORKFLOW" , "class_name" : "MyWorkflow" , "limits" : { "steps" : 25000 } } ] } Previously, each instance was limited to 1,024 steps.
Agents - Real-time file watching in Sandboxes
Sandboxes now support real-time filesystem watching via sandbox.watch() . The method returns a Server-Sent Events ↗ stream backed by native inotify, so your Worker receives create , modify , delete , and move events as they happen inside the container. sandbox.watch(path, options) Pass a directory path and optional filters.
More from ModalEvery Modal release →
Modal 1.3.4
- We're introducing "Directory Snapshots": a new beta feature for persisting specific directories past the lifetime of an individual Sandbox. Using the new methods modal.Sandbox.snapshot_directory() and modal.Sandbox.mount_image(), you can capture the state of a directory and then later include it in a different Sandbox: python notest sb =...
Modal 1.3.3
- We've added a new modal billing report CLI and promoted the modal.billing.workspace_billing_report API to General Availability for all Team and Enterprise plan workspaces. We've added modal.Queue.from_id() and modal.Dict.from_id() methods to support referencing a Queue or Dict by its object id. Modal's async usage warnings are now enabled by default.
Modal 1.4.0
We've made significant CLI enhancements so that Modal logs can be more accessible to coding agents: The modal app logs and modal container logs commands now have the ability to fetch historical logs using counting (e.g. --tail 1000) or time-based (e.g., --since 4h, --until 2026-03-15, etc.) configuration.
Modal 1.4.1
- We're introducing a concept of "readiness probes" for modal.Sandbox. This feature lets you configure a readiness check on a TCP port (modal.Probe.with_tcp()) or by executing a process (modal.Probe.with_exec()).
Modal 1.3.2
- Modal objects now have a .get_dashboard_url() method. This method will return a URL for viewing that object on the Modal dashboard: python fc = f.spawn() print(fc.get_dashboard_url()) # Easy access to logs, etc.
Modal 1.3.1
- We've improved our experimental support for Python 3.14t (free-threaded Python) inside Modal containers. The container environment will now use the Python implementation of the Protobuf runtime rather than the incompatible upb implementation.
Modal 1.4.2
- We've added a new modal app rollover CLI command for triggering a redeployment of an App without making any code or configuration changes. A rollover replaces existing containers with fresh ones.
Modal 1.3.0
Modal now supports Python 3.14. Python 3.14t (the free-threading build) support is currently a work in progress, because we are waiting for dependencies to be updated with free-threaded support. Additionally, Modal no longer supports Python 3.9, which has reached end-of-life.