Steel Browser
v1.0.0Control cloud browser sessions via Steel.dev for web automation and computer-use agents. Use when you need to browse the web, fill forms, click elements, tak...
Security Scan
OpenClaw
Suspicious
high confidencePurpose & Capability
The skill's description (Steel.dev browser control) matches the scripts’ behavior (starting/releasing sessions, navigation, clicks, screenshots, JS eval, content extraction). However the registry metadata declares no required environment variables or primary credential while the scripts and SKILL.md clearly require STEEL_API_KEY (and optionally STEEL_SESSION_ID). That mismatch is an incoherence that should be resolved — the API key is essential for the stated purpose and must be declared.
Instruction Scope
Runtime instructions and scripts legitimately perform browser automation actions (navigate, click, type, screenshot, evaluate JS, extract page content). They read/write a state file at ~/.steel_state and require STEEL_API_KEY. The ability to run arbitrary JS (eval_js.sh / page.evaluate) and to extract full page content or screenshots means the skill can capture any data visible in the browser (including PII, credentials, tokens) — this is expected for a browser-control skill but is a sensitive capability the user should be aware of.
Install Mechanism
There is no automated install spec (instruction-only install), which is low-risk for arbitrary downloads. SKILL.md recommends pip install steel-sdk and playwright but the skill does not perform automatic installation. No remote download URLs or extract operations are present in the package itself.
Credentials
The skill requires a Steel API key at runtime (STEEL_API_KEY) and optionally a session ID; yet the registry declares no required env vars or primary credential. Declaring no credentials in metadata is misleading. The skill also suggests persisting the API key into OpenClaw config (openclaw config set env.STEEL_API_KEY), which will store a secret in the agent configuration — users should verify how their platform stores/protects that secret. No unrelated credentials are requested, but the omission in metadata is a notable inconsistency.
Persistence & Privilege
The skill does not request always:true and does not modify other skills. It writes a per-user state file (~/.steel_state) to persist session_id, which is reasonable for session reuse. Autonomous invocation is allowed (disable-model-invocation is false) — normal for skills — but combined with a stored API key it raises the usual caution about an agent being able to run web actions without explicit user prompts.
What to consider before installing
This package appears to implement a Steel.dev browser automation skill and the scripts perform the expected operations, but the registry metadata failing to declare STEEL_API_KEY is an inconsistency you should address before installing. Actionable checks and precautions: 1) Confirm you trust the source and Steel.dev (no homepage is listed here). 2) Expect to provide STEEL_API_KEY in your environment or OpenClaw config — understand how and where that secret will be stored and who can access it, and consider using a scoped/rotatable key. 3) Review the scripts locally (they are included) — they write ~/.steel_state and allow arbitrary JavaScript execution and full-page content extraction, which can capture sensitive data from pages the agent visits. 4) Limit agent autonomy if you don’t want the agent to run browser actions unattended (restrict invocation or require manual confirmation). 5) Install required Python packages (steel-sdk, playwright) in an isolated environment and verify network calls (the code connects to wss://connect.steel.dev?apiKey=...&sessionId=...) align with Steel’s documented endpoints. If you need this capability and trust Steel.dev, the skill is functionally coherent; if you cannot verify the API key handling or trust the publisher, do not install.Like a lobster shell, security has layers — review code before you run it.
latest
Steel Browser Skill
Cloud browser-use via Steel.dev + Playwright Python SDK. Ideal for web automation, scraping, form filling, and AI agent browser loops.
Prerequisites
pip install steel-sdk playwright
export STEEL_API_KEY=your_key_here
Get your API key at https://app.steel.dev → Settings → API Keys (free: 100 browser hours).
Steel API key should be set in OpenClaw config or environment:
openclaw config set env.STEEL_API_KEY "your_key"
State Management
start_session.shsaves session ID to~/.steel_state- All scripts auto-load it from there
- Override anytime with
export STEEL_SESSION_ID=<id> - Sessions persist until
release_session.shor timeout
Scripts
| Script | Usage | Description |
|---|---|---|
start_session.sh | [--proxy] [--captcha] [--timeout MS] | Create session; prints SESSION_ID + VIEWER_URL |
release_session.sh | [SESSION_ID] | Release session |
list_sessions.sh | (none) | List active sessions |
navigate.sh | URL [--wait-until networkidle] | Go to URL |
screenshot.sh | [OUTPUT.png] [--full-page] | Take screenshot |
click.sh | SELECTOR | Click by CSS/text/aria selector |
click_coords.sh | X Y [--right] [--double] | Click at pixel coords (fallback) |
type.sh | SELECTOR "text" | Fill input field |
press_key.sh | KEY | Press key (e.g. Enter, Control+a) |
scroll.sh | AMOUNT|--to-bottom|--to-top|SELECTOR | Scroll page |
hover.sh | SELECTOR | Hover over element |
select.sh | SELECTOR VALUE | Select dropdown option |
get_content.sh | [--html] [SELECTOR] | Extract page text or HTML |
eval_js.sh | "js expression" | Execute JavaScript, print result |
wait_for.sh | SELECTOR [TIMEOUT_MS] | Wait for element to appear |
get_url.sh | (none) | Print current URL and page title |
Selector Examples
Steel uses Playwright selectors — much more powerful than pixel coords:
# By CSS
click.sh "#submit-button"
click.sh ".nav-link:first-child"
# By text content
click.sh "text=Sign in"
click.sh "button:has-text('Continue')"
# By aria label
click.sh "[aria-label='Search']"
click.sh "[placeholder='Email address']"
# XPath
click.sh "xpath=//button[@type='submit']"
Browser-Use Agent Loop Pattern
SCRIPTS="skills/steel-browser/scripts"
# 1. Start session (add --proxy --captcha for tough sites)
source <($SCRIPTS/start_session.sh)
echo "Session: $SESSION_ID"
echo "Watch at: $VIEWER_URL"
# 2. Navigate
$SCRIPTS/navigate.sh "https://example.com"
# 3. Agent loop
while true; do
$SCRIPTS/screenshot.sh /tmp/screen.png
# Get page text for LLM context
CONTENT=$($SCRIPTS/get_content.sh)
# LLM decides action...
ACTION=$(echo "$CONTENT" | llm_decide /tmp/screen.png)
case "$ACTION_TYPE" in
click) $SCRIPTS/click.sh "$SELECTOR" ;;
type) $SCRIPTS/type.sh "$SELECTOR" "$TEXT" ;;
navigate) $SCRIPTS/navigate.sh "$URL" ;;
done) break ;;
esac
done
# 4. Release
$SCRIPTS/release_session.sh
vs E2B Desktop
| Feature | Steel Browser | E2B Desktop |
|---|---|---|
| Selectors | Playwright CSS/text/aria ✅ | Pixel coords only |
| Proxy support | ✅ Residential proxies | ❌ |
| CAPTCHA solving | ✅ Built-in | ❌ |
| Non-browser tasks | ❌ | ✅ Desktop apps, terminal |
| Session viewer | ✅ Live URL | ✅ VNC stream |
Use Steel for web automation. Use E2B Desktop for desktop apps / full OS control.
Comments
Loading comments...
