- Add cloud profile commands: list, create, get, update, delete
- Add profile sync command to sync local Chrome cookies to cloud
- Add profile cookies command to list cookies by domain
- Add cookies export/import commands for bulk transfer
- Optimize cookie import using Network.setCookies (bulk API)
- Real browser now runs headless by default (use --headed for visible)
- Support --domain flag for syncing specific domain cookies only
- Update SKILL.md with cloud profile workflow documentation
- Add `profile list-local` command to discover local Chrome profiles
- Fix real browser mode to properly pass `profile_directory` to BrowserSession
- Document profile management workflow in SKILL.md
Non-required fields were always unioned with None, allowing null values
even when the JSON Schema did not permit them. Now only explicitly
nullable fields accept null. Non-required primitives get type-appropriate
zero defaults (empty string, 0, 0.0, False), arrays get [], and nested
objects fall back to None only where constructing a default is infeasible.
Gemini rejects OBJECT types with no properties in the response schema.
The output_schema field (dict | None) produced exactly that. Since this
field is only used programmatically, wrap it with SkipJsonSchema to
exclude it from the generated JSON schema while keeping it functional.
Adds information retrieval commands to the browser-use CLI:
- get title: page title
- get html: full page or element HTML via selector
- get text: text content of element by index
- get value: input/textarea value by index
- get attributes: all attributes of element by index
- get bbox: bounding box (x, y, width, height) of element
Adds mouse interaction commands to the browser-use CLI:
- hover: move mouse over element (triggers CSS :hover effects)
- dblclick: double-click element
- rightclick: right-click element (context menu)
Adds wait conditions to the browser-use CLI with two subcommands:
- wait selector: wait for CSS selector with state options (visible, hidden, attached, detached)
- wait text: wait for text to appear on the page
Both support custom timeout in milliseconds.
Adds cookie management to the browser-use CLI with three subcommands:
- cookies get: retrieve all cookies or filter by URL
- cookies set: create cookies with domain, path, secure, httpOnly options
- cookies clear: remove all cookies or filter by URL
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Bump the package version to 0.11.6 to prepare a patch release. This
updates pyproject.toml so we can publish the latest changes.
<sup>Written for commit 6ad36bc3a3.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Click actions now automatically wait for triggered downloads and return
file info, fixing flows that finished before files were saved. Adds a
helper to detach watchdog event handlers to avoid leaks.
- **New Features**
- ClickElement/ClickCoordinate wait for DownloadStarted and completion
(30s default), returning path, name, size, and type; reports active
progress or timeout status in metadata.
- DownloadsWatchdog provides direct start/progress/complete callbacks
and emits new DownloadStartedEvent and DownloadProgressEvent;
FileDownloadedEvent now includes a guid for correlation.
- **Bug Fixes**
- Removes the race by correlating CDP GUIDs and awaiting download
completion; handles stalls and timeouts gracefully.
- Adds BaseWatchdog.detach_handler_from_session to help prevent
duplicate triggers and memory leaks.
<sup>Written for commit a8ce4a2a43.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
Made read_file smarter for PDFs - instead of just reading the first 20 pgs, it reads up to 60k chars and uses IDF scoring to prioritize pgs w unique content
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Generalized the “leaf-start” typing fix to all contenteditable editors,
preventing the first character from being dropped and improving
reliability across rich text inputs.
- **Bug Fixes**
- Detect contenteditable elements (or role="textbox"
non-input/textarea).
- After typing the first char when clear=True, verify via
activeElement.textContent and retype if missing.
- Removed Draft.js-only detection and the sacrificial space hack.
<sup>Written for commit 2c8b761d49.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
only use special anthropic prompt for flash, as thinking & main sys are
now min length for caching
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Use the Anthropic-specific system prompt only for Flash mode. Non-Flash
Anthropic 4.5 models now use the standard prompts, which already meet
the 4096+ token requirement for caching.
- **Refactors**
- Simplified selection: Anthropic 4.5 uses
`system_prompt_anthropic_flash.md` only when `flash_mode` is on;
otherwise it falls back to standard (thinking/no-thinking) prompts.
- Removed unused files: `system_prompt_anthropic.md`,
`system_prompt_anthropic_no_thinking.md`.
- Reduces prompt duplication while keeping caching behavior intact.
<sup>Written for commit 2c5682618b.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
so it can return path if it needs; resolves 833 failures where agents
tried write_file with .png and got rejected
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Added an optional file_name to the screenshot action so you can save a
PNG and get the path back. Keeps the old “include in next observation”
behavior and avoids failures where agents tried write_file with .png.
- **New Features**
- Added ScreenshotAction with file_name; sanitizes name and appends .png
if missing.
- When provided, saves viewport screenshot to the workspace directory
and returns the path in attachments; when omitted, sets
include_screenshot for the next observation.
<sup>Written for commit a81a493794.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
## Summary
- Add `<critical_reminders>` section (12 items) to `system_prompt.md`
and `system_prompt_no_thinking.md` — covers action verification, popup
handling, filter application, loop avoidance, and max_steps behavior
- Add `<error_recovery>` section (8 items) — structured escalation from
screenshot verification through alternative approaches
- Add 3 new `<browser_rules>`: popup/modal handling, 403/bot detection
fallback, and unproductive loop detection
- Add action verification guidance to `<action_rules>` — verify state
between consequential actions
- Add 5 failure-mode memory examples (filter, popup, failed click,
captcha, 403) and 2 next_goal examples (close popup, apply filter)
- Strengthen filter rule from "try to apply filters" to "ALWAYS look for
filter/sort options FIRST"
- Fix captcha rule to include step budget ("3-4 steps") and fix
"trajactory" typo
All changes already existed in the anthropic prompt variants — this PR
brings the standard prompts (used by OpenAI, Gemini, and other
non-Anthropic models) to parity.
## Test plan
- [ ] Run `uv run pytest -vxs tests/ci` to confirm no regressions
- [ ] Verify `system_prompt.md` and `system_prompt_no_thinking.md` now
contain all sections present in their anthropic counterparts
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Backported robustness rules from the Anthropic prompt variants to the
standard prompts to improve web navigation reliability and reduce
unproductive loops.
- **New Features**
- Added <critical_reminders> (12 items) and <error_recovery> (8 items)
to both standard prompts.
- Browser rules: popup/modal handling, 403/bot detection fallback, and
loop detection.
- Action rules: verify state between consequential actions before
proceeding.
- Guidance: ALWAYS apply filters first when criteria exist; captcha
effort capped at 3–4 steps; fixed “trajectory” typo.
- Examples: added failure-mode memory entries and next_goal examples
(close popup, apply filter).
<sup>Written for commit 996c2cb38d.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
## Summary
- **Auto-sanitize filenames** instead of rejecting them — special chars
get stripped. Eliminates 148+ failures from filename format errors where
agents enter 15-30 retry loops.
- **Specific error messages for binary extensions** (.png, .jpg, .mp4,
etc.) telling the agent screenshots are automatic and it should not save
them as files. Stops 833+ infinite retry loops.
- **Allow dots, spaces, and parentheses in filenames** (e.g.
`report.v2.md`, `data (1).csv`, `my file.txt`)
- **Add .html and .xml** as supported file types — agents commonly
generate these
- **Improved tool description** with explicit filename rules, supported
extensions, and clarification that default mode overwrites (use
`append=true` to add content)
## Context
Analysis of judgements over 2 weeks revealed file-related failures as a
major pain point. The `write_file` tool was responsible due to strict
filename validation and failures where agents tried to save screenshots
as .png files. Agents entered severe retry loops (15-30+ identical
failed attempts) because:
1. The error message was generic and didn't explain what was wrong
2. The tool description didn't list filename rules
3. Valid-looking filenames with dots/spaces were rejected
4. Binary file attempts got the same generic error, causing endless
retries
## Test plan
- [x] All 55 existing filesystem tests pass
- [x] New tests for filename sanitization (spaces→hyphens, special char
removal, collapse hyphens, fallback name)
- [x] New tests for binary extension error messages (.png, .jpg)
- [x] New tests for unsupported extension error messages (.css, .doc)
- [x] New tests for HTML file writing
- [x] New tests for dots in filename (report.v2.md,
data.backup.2024.csv)
- [x] Pre-commit linting (ruff format, ruff check, pyright) all pass
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Medium Risk**
> Behavior of `write_file`/`append_file`/`replace_file_str` changes by
auto-sanitizing filenames and allowing additional characters/extensions,
which could alter file names created and downstream expectations. Risk
is mitigated by basename-only handling and expanded test coverage, but
this touches a core agent tool path.
>
> **Overview**
> **Improves file-writing ergonomics and failure recovery for agents.**
Filename validation is relaxed to allow dots/spaces/parentheses (while
still enforcing a supported extension), and invalid names are now
auto-sanitized (e.g., spaces→hyphens, unsupported chars removed) before
failing.
>
> **Adds clearer feedback and broader text support.**
`write_file`/`append_file`/`replace_file_str` now return specific,
actionable errors for missing/unsupported extensions and explicitly
reject common binary/image formats. The filesystem adds `.html` and
`.xml` file types and updates state restore logic to include them, and
the `write_file` tool description is updated to document overwrite
behavior, filename rules, and supported extensions.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
5e25d92bef. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds step budget awareness to the agent so it warns at 75% of the step
limit and encourages saving partial results and calling done early.
Aligns with IMP-7a.
- **New Features**
- Injects a budget warning at >=75% of max steps (except the last step).
Message shows used/total, remaining steps, and clear guidance to save
partial results and call done.
- Hooks the warning into context preparation, so the model sees it
before choosing the next action.
- Updates all system prompts to include 75% budget guidance and
multi-item task heuristics (estimate per-item cost, prioritize, save
incrementally).
- Adds CI tests covering threshold behavior, last-step exclusion, small
budgets, percentage formatting, and actionable guidance.
<sup>Written for commit 48cc78928a.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
## Summary
- Increases `MAX_MEMORY_LENGTH` from 1000 to 10000 characters in both
`extract` and `evaluate` actions
- Fixes bug where agent loses access to large JS evaluation results and
hallucinates placeholder text like `JSON_STRING_FROM_STEP_6`
- When results exceed the threshold, `long_term_memory` gets a useless
summary and full data only appears in `<read_state>` for one step —
increasing 10x keeps most results in persistent memory
## Root Cause
In `tools/service.py`, when `evaluate` returns >1000 chars:
1. `long_term_memory` = `"JavaScript executed successfully, result
length: 4387 characters."`
2. Full data → `extracted_content` with
`include_extracted_content_only_once = True`
3. Data shown once in `<read_state>`, then gone from context
4. Agent can't access data in later steps → hallucinates placeholder
variable names
## Test plan
- [ ] Run existing CI tests
- [ ] Test `evaluate` with results between 1000-10000 chars — should now
persist in memory
- [ ] Test `extract` with results between 1000-10000 chars — should now
persist in memory
- [ ] Verify results >10000 chars still use the one-time read_state
pattern
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Medium Risk**
> Medium risk because it changes agent memory persistence behavior (more
content kept in long-term context) and adds stricter file-upload
validation that can introduce new user-visible failures for empty files.
>
> **Overview**
> Improves agent reliability by keeping more `extract` and `evaluate`
output in long-term memory: increases `MAX_MEMORY_LENGTH` from `1000` to
`10000` before falling back to the one-time `<read_state>`/saved-file
pattern.
>
> Hardens file handling by rejecting empty (0-byte) uploads in both the
`upload_file` tool (local mode) and the CDP `UploadFileEvent` handler,
and makes external file reading treat any `FileSystem._file_types`
extension as text except `docx`/`pdf`/images.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
3ba50e68b0. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Increase MAX_MEMORY_LENGTH to 10,000 in extract/evaluate so larger
results persist across steps and reduce placeholder hallucinations. Also
block empty-file uploads and make text file detection dynamic for
structured reads.
- **Bug Fixes**
- Keep evaluate/extract results up to 10k chars in long_term_memory;
>10k still uses one-time read_state.
- Reject 0-byte uploads with clear errors (validated in service and CDP
watchdog).
- Derive text extensions from _file_types in read_file_structured,
removing the hardcoded list.
<sup>Written for commit 5524c986e5.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->