Changelog
Changelog #012 | 2025-06-11Copied!

Clean up and fixes galore 🧹 Sometimes the best updates are the ones that make everything just work better - and that's exactly what we focused on this week.
🔧 Bugfixes/ImprovementsCopied!
Steel Cloud
-
Fixed infinite websocket connection issues for frontend logs that were causing performance degradation
-
Resolved bug where recording snapshots larger than 5MB were being dropped, ensuring complete session recordings
-
Fixed user agent string passing functionality that wasn't working correctly in session creation
-
Patched frontend crash that occurred when clicking on newly ended sessions
-
Implemented performance improvements across the dashboard for smoother and faster data fetching
-
Added better error boundaries throughout the frontend for improved stability and user experience
Steel Playground
-
Enhanced error handling for code execution, providing clearer feedback when things go wrong
-
Improved animations and created a smoother terminal experience for better developer workflow
As always, thanks for testing out the Steel beta. We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community.
Changelog #011 | 2025-06-03Copied!
Sup chat. Huss here back with your roundup of Steel's first Launch Week. We launched new features every day last week (fully recapped below) as well as a new pricing plan.
Let's take a look! 🤸
Day 1 - Credentials BetaCopied!

Your agents can now automatically sign into password-protected websites without ever seeing your credentials. Built with enterprise-grade AES-256-GCM encryption, TOTP/2FA support, and field blurring protection.
Just store credentials via API, create sessions with credential injection enabled, and Steel will automatically authenticate to unblock your agents. Read the announcement thread here.
Read Credentials API Docs →Day 2 - Steel PlaygroundCopied!

Steel Playground is the first zero-setup tool from Steel that lets you test browser automations faster than ever, directly on the web.
Write Puppeteer, Playwright, or browser-use code and watch it execute live through an integrated session viewer, terminal, and log view. Works with both Python and TypeScript, with 1-click templates from our cookbook! Read the announcement thread here.
Day 3 - Multi-Region Browser DeploymentsCopied!

At Steel, we understand that latency kills agent performance, especially with hundreds of requests across continents adding up to sluggish experiences.
We've expanded Steel Cloud to 7 global regions with automatic closest-region selection—from Los Angeles to Hong Kong, your browsers spin up wherever makes the most sense. Read the announcement thread here.
Read Multi-Region Docs →Day 4 - Filesystem V2Copied!

Your agents can now upload, manage, and download files seamlessly within browser sessions, plus get persistent global storage & backups across all automations.
Upload files once and mount them to sessions anywhere, download files from online, or bulk download all artifacts from a session as zip archives. Read the announcement thread here.
Day 5 - Starter Plan + PAYGCopied!

We're (finally) making Steel accessible to every team that wants to test and validate browser automation. There's now a perfect middle ground between tinkering and launching.
The Starter Plan gives you $29/month with $29 in credits, plus pay-as-you-go overages so you don't hit limits in prod.
Go to Pricing →-------------
Thanks for building with Steel! It means the world to us and we’re excited to hear your feedback on the above!
Changelog #010 | 2025-05-21Copied!

Hey! This week we focused on implementing some fixes and improvements to help round out Steel’s DevEx while we prepare for [REDACTED]. Let’s get into it!
🔧 Bugfixes/ImprovementsCopied!
-
Steel Browser
-
Improved Chrome args structure and manipulation using ENV variables
-
Updated Steel browser plugin so you can hook onto custom CDP lifecycle events without editing source code directly
-
Separated Browser and API launch, resulting in faster API boot times
-
Standardized package names in the repo for a cleaner dependency structure
-
-
Steel Cloud
-
Fixes to re-render bugs that were causing some state update delays
-
Fixes requests ordering from FE to preload data for a snappier UI
-
New Signup / Sign-in page dropped :)
-
Improved browser logs component to make them easier to understand
-
Thanks for reading & testing out the Steel beta. We really look forward to more of your feedback and continuing to cook for ya’ll.
Changelog #009 | 2025-05-13Copied!

We’ve got some really cool stuff in the oven cooking 👨🍳 But in the meantime, here’s a handful of bug fixes and quality of life features we’ve pushed this week.
🔧 Bugfixes/Improvements Copied!
-
Patched issue with adding session context via Python SDK
-
Resolved issue with inability to access iframe content in Steel Sessions
-
Added advanced options on session creation through the Steel Cloud dashboard
-
A handful of UI/API fixes
As always, thanks for testing out the Steel beta. We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community.
Changelog #008 | 2025-05-06Copied!

Howdy y’all! These last few weeks brought significant improvements to session state management and browser control capabilities, along with several important bugfixes to enhance the Steel experience.
⭐ NewCopied!
Enhanced Session Context Support 🔄
Session contexts have been extended to cover indexedDB and sessionStorage, providing more robust state persistence and authentication handling. This improvement allows for more reliable user sessions, especially for sites that rely heavily on client-side storage for auth tokens and application state.
// Example: Working with the enhanced session context
const session = await client.sessions.create();
let browser = await chromium.connectOverCDP(
`wss://connect.steel.dev?apiKey=${process.env.STEEL_API_KEY}&sessionId=${session.id}`
);
const page = await browser.contexts()[0].pages()[0];
// Session now maintains indexedDB and sessionStorage state
// Perfect for sites using modern auth patterns
await page.goto('https://app.example.com/login');
await page.fill('#email', 'user@example.com');
await page.fill('#password', 'password123');
await page.click('#login-button');
const sessionContext = await client.sessions.context(session.id);
const session = await client.sessions.create({ sessionContext });
browser = await chromium.connectOverCDP(
`wss://connect.steel.dev?apiKey=${process.env.STEEL_API_KEY}&sessionId=${session.id}`
);
const page = await browser.contexts()[0].pages()[0];
// State persists across navigation
await page.goto('https://app.example.com/dashboard');
// User remains logged in!
Documentation Link | Auth Examples
Steel Browser Now Uses Chromium By Default 🌐
We've upgraded Steel Browser to use Chromium as our default browser, replacing our previous Chrome implementation. While Chrome served us well for bypassing basic anti-bot measures and stealth detection, it presented compatibility challenges for M-chip Mac users.
The key issue was that Mac users running Steel Browser through Docker couldn't operate properly, as Chrome lacked distribution support for ARM Linux machines (which our Docker image utilized for Mac compatibility).
Now that we use Chromium by default (which DOES have an ARM Linux compatible distribution);all the issues that Mac users were facing should now be gone.
🔧 Bugfixes/ImprovementsCopied!
-
Steel Browser is now plugin-based, allowing
-
Fixed multiple UI bugs for a smoother user experience
-
Resolved an issue with browser updates happening in the background causing interruptions
-
Added support for custom Chrome arguments via environment variables
-
Improved session stability when working with sites that use indexedDB heavily
-
Fixed state synchronization issues between browser restarts
-
Repaired the live viewer for Railway deployments in Steel Browser
-
You can now call browser actions with existing sessions
-
Improved URL and environment variable management in the open-source repository
-
Custom domain support throughout steel browser
-
+10 other small bugfixes all around
💖 First-time contributors Copied!
Special thanks to @aspectrr for their help on enabling custom Chrome args for Steel Browser; as well as the ability to run browser actions on current pages within a session.
As always, thanks for testing out the Steel beta. We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community.
Got questions or want to chat? Join us on Discord or reach out on Twitter/X.
Changelog #007 | 2025-04-09Copied!

Hey y’all! This week's update brings an exciting new Files API for Sessions, along with several improvements to the Steel browser experience and important bugfixes to enhance stability.

⭐ NewCopied!
Files API for Sessions 📂
The new Files API enables seamless file management within active browser sessions. You can now upload files from your local machine, use them in your automation workflows, and download files back when needed - perfect for testing file uploads or working with documents in your browser automation.
// Upload a file to your session
const file = new File(["Hello World!"], "hello.txt", { type: "text/plain" });
const uploadedFile = await client.sessions.files.upload(session.id, { file });
// Create a CDP session to pass in some custom controls
const cdpSession = await currentContext.newCDPSession(page);
const document = await cdpSession.send("DOM.getDocument");
// We need to find the input element using the selector
const inputNode = await cdpSession.send("DOM.querySelector", {
nodeId: document.root.nodeId,
selector: "#load-file",
});
// Set the CSV file as input on the page.
await cdpSession.send("DOM.setFileInputFiles", {
files: [uploadedFile.path],
nodeId: inputNode.nodeId,
});
// Download a file from your session
const response = await client.sessions.files.download(session.id, file.id);
const downloadedFile = await response.blob();
Documentation Link | Steel Cookbook
🔧 Bugfixes/ImprovementsCopied!
-
Improved rendering of the session viewer for a slight speed bump in UI updates
-
Enhanced logging system for better coverage and debugging capabilities
-
Upgraded the session viewer UI on steel-browser for improved usability
-
Fixed proxy usage metrics that were incorrectly over-reporting usage
-
Improved the UI docker image to accept dynamic API URLs, enabling more flexible custom deployments
-
+10 other small bug fixes
As always, thanks for testing out the Steel beta. We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community.
Got questions or want to chat? Join us on Discord or reach out on Twitter/X.
Changelog #006 | 2025-04-01Copied!

Happy April Fools day y’all! We’ve been heads down this week on some large features that we have coming soon — but thought we should give you guys a little update
🔧 Bugfixes/ImprovementsCopied!
-
Bug causing the session viewer to flicker on certain websites is no longer
-
Issue with non-existent session directory when starting up steel-browser is now gone
-
"proxyTxBytes is required!" error when accessing past session details was also fixed
-
On steel-browser, you can now pass in
SKIP_FINGERPRINT_INJECTION
to override our stealth logic and use your own
🏡 Housekeeping Copied!
-
HUUUGE welcome to the newest members of the Steel team Dane and JunHyoung! They’ll both be pushing tons of features to steel-browser and Steel Cloud and join us in building out the rest of the Steel universe!
💖 First-time contributors Copied!
Special thanks to the following new contributors who've made the above improvements possible 💖 @jagadeshjai
As always, thanks for testing out the Steel beta. We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community.
Got questions or want to chat? Join us on Discord or reach out on Twitter/X.
Changelog #005 | 2025-03-26Copied!

Happy Wednesday, chat 🫡 We've been working hard on some key improvements to our bot detection avoidance capabilities, adding new features, and squashing bugs. Here's what's new this week:
⭐ NewCopied!
Enhanced Stealth Improvements 🥷
We've made significant improvements to our stealth features and patched several fingerprinting leaks that were causing browser sessions to be flagged as bots. These updates help ensure your sessions can navigate the web more reliably without triggering anti-bot measures.
Availability: Steel Cloud ☁️ + Steel-browser (OSS) 🔧
Cloudflare Turnstile Solving ✅
We've launched an early version of Cloudflare Turnstile solving, now included in our CAPTCHA solving module within sessions. The solver works well for most common Turnstile implementations, though we're still refining it for some edge cases.
Availability: Steel Cloud ☁️
Take Control Feature in Surf.new 🎮
Inspired by OpenAI's Operator, we've implemented a new "Take Control" feature in Surf.new. This allows you to:
-
Pause the AI agent and manually interact with the browser
-
Complete complex tasks like signing into websites
-
Hand control back to the AI to continue where you left off
This showcase demonstrates the power of our debug URL capabilities, which you can integrate into your own applications.
🔧 Bugfixes/Improvements
-
Fixed issues with the one-click deployment to Railway on steel-browser
-
Better error handling for incorrect inputs
-
Frontend updates for multi-tab / playback
-
Various performance optimizations for browser initialization
💖 First-time contributorsCopied!
Special thanks to @shivamkhatri for making some key PRs on Surf and steel-browser! 💖
As always, thanks for testing out Steel! We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community.
Got questions or want to chat? Join us on Discord or reach out on Twitter/X.
Changelog #004 | 2025-03-19Copied!

Wooooooooooooo!! We got some new updates we’re pumped to share.
⭐ NewCopied!
npx create-steel-app
The easiest way to get started with Steel just dropped!
Run npx create-steel-app
to spin up a full project based on any of the recipes in the Steel cookbook repo.
Note: This works with pure Python projects too! As long as you have npm installed, you’ll be able quick spin up projects like Browser-use and Playwright-python on Steel!

Multitab Support
We shipped support for multiple tabs via the debug URL. This comes with support for embedding specific pages as well as a full browser view that displays all tabs with full interactivity. Essentially a fully embeddable browser UI can now exist right in your app. Light/dark mode supported ;)

Embed and view session recordings
We’ve published an endpoint (v1/sessions/:id/events)
and docs around how you can simply embed and view session recordings inside your app.
Here’s a code snippet of how to create an embeddable session replay component:
import rrwebPlayer from 'rrweb-player';
import 'rrweb-player/dist/style.css'; // important for styling of the player
// Once you've fetched the events
const events = await client.sessions.events(session.id)
// Create player element
const playerElement = document.getElementById('player-container');
// Initialize the player with events
const player = new rrwebPlayer({
target: playerElement,
props: {
events: events,
width: 800, // Width of the player
height: 600, // Height of the player
autoPlay: true,
skipInactive: true // Skip periods of inactivity
}
});
CUA x Steel
OpenAI’s Computer-use agent just dropped and it’s awesome! We’ve added a whole bunch of resources across the Steel universe to demo how the CUA agent can control a Steel browser!
-
Coming soon to Surf.new 🌊
🔧 Bugfixes/ImprovementsCopied!
-
Python/Node SDKs are out of beta and official starting on version `0.0.1` 🥂 This update comes with all the afore mentioned capabilities incorporated into the SDKs.
-
Lots of improvements and fixes to the Surf UI
-
Added guide to docs on how to re-use contexts between sessions for carrying over things like authenticated state (docs)
-
Patches some source of memory leak errors causing slower session times
🏡 HousekeepingCopied!
-
Carti dropped 🗣️
💖 First-time contributorsCopied!
Special thanks to @PaperBoardOfficial for making some key PRs and issues on Surf 💖
As always, thanks for testing out the Steel beta. We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community.
Changelog #003 | 2025-03-04Copied!

Happy Tuesday everyone! This week, the team has been heads down working through customer issues/bugs/complaints (especially the trickier ones) and we have a lot of exciting stuff in the works. But first, some updates!
⭐ NewCopied!
Browser Agent Leaderboard 🏆 | leaderboard.steel.dev
We’ve been seeing some exciting new developments in the web agent space. From OpenAI Operator, to Browser Use, there’s been a ton of announcements in the last two months and the state of the art is constantly being outdone. That’s why we decided to launch a leaderboard, compiling the top ranking web agents based on WebVoyager results.

Lightning-fast Session Creation Times ⚡️
Now, when creating a session that uses that use default value (except timeout, you can change that), sessions will be booted up in ~400ms or less. This was possible due to some new scaling logic that we laid out which allows us to keep new clean browser sessions hot and ready to be used.

Note: these optimizations will not affect sessions using custom proxies or non-default session creation flags.
🔧 Bugfixes/ImprovementsCopied!
-
Resizing the live session view iframe that’s returned from session.debugUrl no longer produces a black screen
-
Hiding the session details tab no longer breaks the session viewer on app.steel.dev
-
Recorded DOM events are now compressed in transport, allowing for smaller sizes in transport (don’t forget to unpack when displaying recorded events)
💖 First-time contributorsCopied!
Special thanks to @junhsss for adding a file management API to Steel Browser. This will allow for very neat applications on both the open source repo and Steel Cloud!
As always, thanks for testing out the Steel beta. We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community.
Changelog #002 | 2025-02-25 Copied!
We decided to maniacally focus on the Steel UX this week and we’re crazy pumped to show you what’s new. Let’s get it 🫡
⭐ NewCopied!
New Steel Dashboard Experience ✨
The Steel dashboard has a sleek new look and feel! We’ve redesigned what it feels like to use Steel Cloud and get onboarded for the first time. We focused on quickly getting started for new users and starting new projects for experienced users.
We’re super proud of this one and look forward to your feedback.
*Coming to the steel-browser repo experience soon!
Docs & cookbook updates👨🍳
You asked and we listened: A bunch of new resources have been created across the Steel Universe.
-
Browser-use: We’ve added a cookbook example and quickstart guide to using browser-use with Steel. Browser-use x Steel is an insanely powerful combo we’ve seen many users deploy and wanted to help make it even easier to get started.
-
DebugURL use-cases: We’ve added new guides to our docs with a focus on how to best leverage the powerful little debug URL you get back from a Steel session response. Check em out:
Surf model updates
We’ve upgraded surf.new with a bunch of new models that you can try out like:
-
Deepseek (
deepseek-chat
anddeepseek-reasoner
) -
Gemini (like
2.0 flash
fast!) -
Claude 3.7 sonnet (woah + fast!)
Or use local models running on your computer with Ollama support :)
🔧 Bugfixes/ImprovementsCopied!
-
Patched issues with fetching and re-using contexts between Sessions (docs coming soon)
-
DebugURL went through a variety of changes + has had it’s full capabilities rolled out to the steel-browser repo
-
Added event counts to Steel Cloud’s Sessions page to make it easier to sift through sessions lists
-
Steel-browser: Improved logging across the board + other upgrades (checkout the latest release here: : v0.1.3-beta)
-
Improved session viewer reliability across the board when viewing live sessions (even more coming!)
🏡 HousekeepingCopied!
-
This week, we welcomed Mislav to the Steel team! He’ll be working on making building agents on Steel even easier and more capable. You can bug him in the Steel discord server @mislavjc.
💖 First-time contributorsCopied!
Special thanks @hakzarov for adding better logging for both the API and the Chrome process on the steel-browser repo!
As always, thanks for testing out the Steel beta. We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community.
Changelog #001 | 2025-02-09Copied!
Happy Super Bowl Sunday 🏈 Before we settle in to lose money on our respective betting apps, we have some updates we NEED to tell you about.
⭐ NewCopied!
Introducing Surf.new
Surf.new is an open-source playground for chatting with different web-agents via Steel. We want it to serve as a resource for the community to try out new web agents as they become available, helping developers evaluate what works best for their use-cases. Currently, you can try browser-use's web agent and a browser-specific fork of Claude’s Computer-use agent. We'll be actively maintaining it while using it as a launching pad to showcase new Steel features and improvements in web automation.
It’s pretty neat if you ask us 🤠 Give it a try and let us know what you think! Contributions are more than welcome too :)
Embedding and interactive with Live Sessions
Our debugURL has some new life blown into it and, oh boy, are we ever pumped about it. The debugURL you get returned when creating a session is most commonly used for viewing what’s happening live in the browser. A common use-case is embedding that view into your app, such that people can see what’s going on in the browser as actions are being taken. It’s what powers our live session viewer in the Steel dashboard.
In addition to a complete refactoring to improve performance, some of the improvements include:
-
Ability to let a viewer interact with the browser sessions directly via clicking, typing, scrolling, etc. This was a big one lots of people have asked for to powering human-in-the-loop features (think “take control” in OpenAI’s Operator).
-
Ability to show/hide mouse on screen
-
Show/hide URL bar & to toggle be light mode or dark mode
All of which can be turned on or off via UTM params. Check out the docs for more on this here!
Available on Steel Cloud and available soon on the steel-browser repo.
Dimensions for sessions
We now support the ability to set screen + viewport dimensions when creating a session (POST/v1/sessions
).
from steel import Steel
client = Steel()
session = client.sessions.create(
dimensions={
"width":1280,
"height":800
}
)
This helps save you from having to set page viewport on every page load. Which can cause buggy resizing behaviour with your sessions.
Available on Steel Cloud and the steel-browser repo.
Ad blocking
You can now block ads from rendering in your sessions. This is useful for saving on proxy bandwidth, simplifying action space for agents (so they don’t have the option of clicking on ads), and generally speeding up page load times.
It’s defaulted to true
when starting a session but you can explicitly turn it on/off by passing a bool into the blockAds
param in the create session endpoint (POST/v1/sessions
) or via the SDK like so:
from steel import Steel
client = Steel()
session = client.sessions.create(
block_ads=true
)
🔧 Fixes/ImprovementsCopied!
Lots of bug fixes and improvements across the board including:
-
Fixed with inability to view sessions where proxy was enabled
-
Better scrape errors
-
Improved Proxy usage tracking
-
Fixed multiple issues with Recording sessions
-
Implemented graceful shutdowns
-
Various dockerfile optimizations
-
Custom executable paths for local browsers when running steel-browser repo locally
💖 First time contributorsCopied!
Special thanks to the following new contributors to steel-browser who've made the above improvements possible 💖
@marclave, @krichprollsch, @BrentBrightling , @Envek, @danew, @raymelon, @21e8, @QAComet, @mislavjc, and @Emmanuel-Melon
As always, thanks for testing out the Steel beta. We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community.
Changelog #000 | 2024-12-20Copied!
Happy AGI day (?) & inaugural changelog post. I wanted to share some updates we made to Steel over the last few weeks!
⭐ NewCopied!
-
Just launched a new MCP server for Claude Desktop integration that lets Claude visually browse & interact with the web using our Browser API and Web Voyager
-
Works with self-hosted, local, and cloud implementations
-
Built on a custom Web Voyager implementation using Bounding Boxes and Custom tools to map webpages into LLM action spaces
-
Check it out: https://github.com/steel-dev/steel-mcp-server
🔧 40+ Bugfixes likeCopied!
-
Fixed billing page + usage tracking issues
-
Resolved rate limit errors
-
Resolved session creation bugs with large request volumes
-
Fixed compatibility issues with Windows for OS repo
-
Improved recording extension handling, so it should be more stable now
-
Resolved session viewer crashes for sites >10MB
-
Fixed performance issues with loading certain sites in the open source repo
⚡ImprovementsCopied!
-
Large, complex sites now render in just a few seconds (instead of forever like before)
-
Session launch time improved by ~30%
-
Faster and clearer error messaging
-
Enhanced session viewer stability
🏡 HousekeepingCopied!
-
We're rolling out a Research Grants program to support AI researchers with Steel Credits! If you're working on web scraping research or exploring new ways for agents to use the web, reach out to research@steel.dev and we'd love to support you.
-
We're hiring across engineering roles! Looking for full stack, Applied AI, and infra developers who love open source, AI, and tackling challenging problems. Plus, there's a $5,000 referral bonus if you help us find the right person! More details: https://steel-dev.notion.site/jobs-at-steel
Thanks for testing out the Steel beta. We really look forward to more of your feedback and continuing to build with this awesome, curious, and supportive community. Happy Holidays ☃️