v1.0.48
microsoft/markitdownv1.0.48Aug 5, 2026by github-actions[bot]
AI Summary
This release introduces a code-first browser recording feature, enhances artifact security with signed URLs, and improves the Model Context Protocol (MCP) integration. It also includes numerous bug fixes for form handling, credential management, and XPath resolution.
Key Highlights
- Code-first browser recording as an opt-in feature preview
- Artifact URL re-minting gated to Skyvern signed content URLs
- Added artifact timeline tab to browser sessions
- Hardened skyvern-api parsing and validation boundaries
- Browser Profiles Refresh-in-place and usage endpoints
New Features
- Code-first browser recording (opt-in feature preview)
- Artifact timeline tab to browser sessions
- Import externally recorded eval runs into the eval dashboard
- Browser Profiles Refresh-in-place
Full Release Notes
## What's Changed
Version bumped from 1.0.50 to 1.0.48
### Recent Changes
- Capture post-run page evidence from the run's own browser session (SKY-14254) (#8229) (b50f02566)
- Add the selector engines Skyvern's producers emit to skycdp (SKY-14071) (#8217) (6a6b6383e)
**Full Changelog**: https://github.com/Skyvern-AI/skyvern/compare/v1.0.50...v1.0.48
## What's Changed
* chore(deps): bump mcp to 1.28.1 to fix 3 high-severity Dependabot alerts by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7496
* Refuse Copilot drafts whose entire output contract is a null blocker (SKY-12539) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7497
* Gate artifact URL re-minting to Skyvern signed content URLs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7499
* feat(SKY-12550): record what an agent does in the browser so it can be replayed as a workflow by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7498
* Import externally recorded eval runs into the eval dashboard by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7502
* [SKY-12553] Add per-gate Copilot author-time log-only registry by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7503
* Strip metadata from signed artifact URLs and redact signature params from logs and traces by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7504
* Redact signed/presigned artifact URL params from webhook delivery logs (SKY-12624) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7505
* feat(SKY-12600): add an artifact timeline tab to browser sessions (run view for MCP-driven sessions) by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7506
* fix(SKY-12545): keep credentialed terminal actions past login by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7507
* SKY-12593: load legacy copilot criteria-set rows via tolerant decode, fail closed on drift by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7508
* fix(SKY-12590): treat off-schema OTP parser output as 400, not retryable 502 by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7509
* fix: offer the Skyvern credential source outside the cloud shell by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7510
* feat(browser): OSS browser-engine registry/adapter foundation (SKY-12007) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7511
* Render-validate copilot code blocks at the persist seam (SKY-12591) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7512
* Show unsaved workflow changes and change summaries in Studio (SKY-12442) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7513
* refactor: extract _is_org_flag_enabled so org-bucketed flag gates stop being copy-pasted by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7514
* test(SKY-12634): stop two select tests racing a real wall clock under CI load by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7515
* fix(SKY-12399): shadow-DOM-aware incremental dropdown detection with scoped fallback by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7516
* fix(SKY-12399): verify masked input commits, retype on empty/placehol… by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7517
* fix: run background work when FastAPI BackgroundTasks is unavailable by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7518
* docs(SKY-12601): make MCP element-ref lifetime truthful per transport (stdio vs hosted HTTP) by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7519
* fix(SKY-12399): surface a diagnostic when a submit click does not advance the form by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7520
* feat(SKY-12153): fallback credentials with automatic run retry by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7521
* feat(SKY-12612): batch run-heal-summary endpoint for run-list outcome-risk by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7523
* fix(SKY-12661): route select-verification prompts through LLM_CONFIG_BY_PROMPT_TYPE by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7524
* feat(SKY-12612): run-list outcome-risk marker by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7526
* fix(SKY-12400): verify autocomplete commit on all selection paths with polled suggestion detection by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7525
* Converge Copilot author-time metadata-gate rejects to a typed terminal (SKY-12594) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7527
* fix(SKY-12153): address codex review on fallback credentials (follow-up to #13599) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7528
* test: stop hand-quoted Playwright snippets from drifting back into the MCP tools by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7529
* Scope the public eval artifact lookup to the eval org (SKY-12639 follow-up) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7530
* fix(SKY-12398): verify text-input commit with fallback ladder and repeated-action circuit breaker by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7531
* Arm an escalating convergence directive when Copilot authors code blocks without metadata (SKY-11949) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7533
* feat: code-first browser recording (opt-in feature preview) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7534
* feat(SKY-12505): ADR + hexagonal scaffold for the Python CDP proxy service by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7535
* Add CDP proxy benchmark harness: direct vs proxied on identical workloads (SKY-12503) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7536
* Add the command-interception middleware seam for custom CDP-op implementations (SKY-12535) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7537
* Harden skyvern-api parsing/validation boundaries (SKY-12523, SKY-12625, SKY-12515) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7539
* Reject ambiguous xpath-fallback element resolution (SKY-12606, SKY-12605, SKY-12635) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7540
* Classify transient LLM upstream failures as retryable (SKY-12620) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7541
* Support org-level CDP operation denylists (SKY-12538) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7542
* Guard undefined block parameters in workflow editor (SKY-12405) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7543
* fix(SKY-12530): don't remove shared workflow-run context on SDK run_action cleanup by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7545
* Production entrypoint, health/drain, and cloud image for the CDP proxy (SKY-12533) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7546
* Honor CDP proxy denylist env knobs in production; second-signal fast drain exit (SKY-12533) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7547
* feat(SKY-12649): Browser Profiles Refresh-in-place, role badges, used-by delete guards by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7548
* SKY-12309: Avoid failing successful Copilot runs when an optional blocker is absent by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7549
* feat(SKY-12649): browser profile usage endpoint + atomic delete used-by guard by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7550
* fix(SKY-12701): disable OTLP trace export on Hetzner temporal workers and quiet exporter logs by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7552
* Gate durable Copilot authoring on scout goal-reach; arm the freehand reject by selector provenance (SKY-12547) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7556
* Copilot: stop unbounded retry loops on code-block turns — end with an honest failure message or a corrective hint (SKY-12711) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7557
* SKY-12548: Copilot: carry a typed binding directive across author-time declared-input rejects so the next attempt converges by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7564
* SKY-12588: withhold block runs while declared workflow inputs are wired to nothing (stacked on #13549) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7565
* Preserve delivered-unverified Copilot output (SKY-12614) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7566
* SKY-12613: Add selection-shaped routes to the typed binding corrective by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7567
* fix(SKY-12715): accept template variables in HTTP Request block URL validation by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7569
* fix(SKY-12143): recover credential inputs corrupted by the fill+type caret race (rotation + truncation) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7570
* feat(browser): pin one browser engine per logical run (SKY-12007) [2/5] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7571
* feat: land run-level tagging workstream by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7259
* Classify page-analysis timeouts as page-load timeouts (SKY-12629) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7538
* Guard element ops against incompatible element types (SKY-12687, SKY-12566, SKY-12673) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7544
* SKY-12561: Remove unreachable submit rung binding channel by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7568
* chore(security): non-security md5 flag in copilot schema test and npm ignore-scripts for proxy js_clients fixture by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7572
* test(browser): engine-owner cancellation and cleanup races (SKY-12007) [3/5] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7573
* Reject malformed MCP tool arguments with a clear error (SKY-12666) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7574
* Add paused to the public RunStatus enum (SKY-12549) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7576
* Bound max_screenshot_scrolls to prevent workflow_runs integer overflow (SKY-12445) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7575
* feat(browser): terminal cleanup for standalone script browsers (SKY-12007) [4/5] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7577
* fix(SKY-12698): auto-wire workflow parameters into code blocks on code-only create/update by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7578
* Remove the CDP proxy service and proxy configuration from the package by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7583
* DB-back the Odysseys runtime/tokens/cost panel (drop the hardcoded dataset) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7582
* feat(SKY-12490): clean up browser profile folders orphaned by hard-killed local MCP servers by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7580
* Accept phone numbers that country-aware fields rewrite with an explicit +1 (SKY-11718) by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7585
* feat(SKY-12443): make studio run-view JSON blocks searchable by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7586
* feat(SKY-12676): show every browser action live on the session Timeline for MCP sessions by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7587
* chore(deps): bump axios from 1.16.1 to 1.18.0 in /skyvern-frontend in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/Skyvern-AI/skyvern/pull/7584
* Remove obsolete standalone container definition by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7588
* feat(SKY-11571): let collapse feature flags target individual workflows by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7589
* Revert the six flag-gated agent-handler verification PRs for SKY-12398/12399/12400 by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7590
* security: bump brace-expansion, js-yaml, and Pillow to fix eleven Dependabot alerts by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7592
* security: bump brace-expansion and Pillow to patched versions by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7591
* fix(SKY-12240): scope failure reason to one place per surface by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7595
* Stop rejecting valid requested outputs after copying errors by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7596
* feat(browser): cloud per-run engine resolver + fail-closed engines (SKY-12007) [5/5] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7597
* fix(SKY-12245): disable double-click zoom on the workflow editor canvas by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7598
* fix(SKY-12246): respect canvas lock for studio block expand/collapse by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7599
* chore(SKY-12746): rename studio run-view sections to Run inputs/Run outputs by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7600
* fix(SKY-12242): fill studio browser media pane edge-to-edge by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7601
* Studio block detail: render status via the shared StatusBadge pill by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7602
* Replace the Workday static script (deterministic) + flag-gated code-mode rollout by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7603
* Restyle the studio action-detail failure block to the app's destructive convention by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7604
* chore(SKY-12238): rename studio Run CTA "Run agent" to "Run" by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7605
* Rename Studio header CTA "Agent Inputs" to "Inputs" (SKY-12237) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7606
* fix(SKY-11513): link studio title to runs page with a blended edit button by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7607
* feat(SKY-12766): surface run id on copilot block_progress frames by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7608
* feat(SKY-12766): render copilot test-run action rows live during runs by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7609
* feat(SKY-11258): stream code-block actions live via idempotent upsert by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7610
* Restore SKY-12240 failure-scope FE changes reverted by #13707 by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7611
* Suppress recurring Playwright collected-object teardown log burst (SKY-12701) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7612
* Stop recording completed Copilot runs with registered outputs as failures (SKY-12765) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7613
* feat(SKY-12138): default-enable copilot credential-pause kill-switch by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7614
* Copilot: the log-only feature flag can now disable any draft-blocking check, not just 3 of 7 by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7616
* feat(SKY-12788): add Gemini 3.5 Flash Lite and Gemini 3.6 Flash model support by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7617
* feat(SKY-12771): add Agent filter to Run History page by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7618
* Set up MCP without leaving the app by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7619
* Revert "Replace the Workday static script (deterministic) + flag-gated code-mode rollout" by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7620
* fix(SKY-12490): retry profile creation when startup sweep tombstones a freshly locked dir by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7621
* eval.skyvern.com improvements by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7615
* workday runs onto the deterministic script by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7622
* Resolve Copilot bare-word entrypoints from verified evidence by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7624
* security: bump body-parser, dompurify, fast-uri, pyasn1, setuptools to fix 11 Dependabot alerts by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7627
* Supersede stale markerless pinned scripts with the current static module (SKY-12657) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7625
* SKY-12811 Let the copilot keep exploring until it finds every value the request asked for by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7628
* SKY-12760: Ask for login credentials at turn start, not end-of-turn by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7629
* SKY-12732: Stop the copilot from putting real passwords into generated login code by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7630
* fix(SKY-12743): add opt-in popup grace for file-download clicks by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7631
* Keep required steps in generated browser workflows by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7632
* fix(SKY-12786): lower expected CDP frame publisher logs by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7633
* test(SKY-12575): cover delimiter-broken JSON in the LLM href-render repair path by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7634
* fix(SKY-12817): support hover instructions in single-action task parsing by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7635
* fix(SKY-12710): scope domUtils.js injection to avoid page global collisions by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7636
* Recover and classify stale frame/element targets in typing and frame resolution (SKY-12618, SKY-12558) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7637
* fix(SKY-9971): bound transient download observation gaps by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7638
* test(guard): close aliased ImportFrom submodule bypass in browser-object identity guard by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7639
* Remove the outputs indicator dot from the Studio v2 Outputs toggle (SKY-12793) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7640
* perf(frontend): drop duplicate run-status poll on run view by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7641
* feat(SKY-12792): cue the studio title as a link to past runs by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7642
* Render Workflow Studio run-view block prompts as prose, not code (SKY-12797) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7643
* feat(SKY-12798): render the studio run view at /runs/{wr} by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7644
* Keep copilot test-run action rows visible at the terminal turn by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7645
* feat(SKY-12773): show created/queued/started/finished run timing in the Studio run summary by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7646
* Bind per-run browser engine's error families to its selection by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7647
* Keep a credential named earlier in the conversation approved when the user confirms (SKY-12812) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7648
* fix(copilot): converge repeated metadata rejects (SKY-12763) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7649
* Handle optional custom-selection misses gracefully; keep required misses typed (SKY-12678, SKY-12631, SKY-12514, SKY-12700) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7650
* Capture inline data URL downloads as files by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7651
* Show human-in-the-loop approve/reject buttons in both run views (SKY-12802) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7652
* Classify element screenshot capture failures (SKY-12519, SKY-12517, SKY-12477) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7653
* feat(SKY-12835): responsive StatusBadge — collapse to icon-only under container width pressure by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7654
* Show an instant rotating placeholder in the copilot chat after send by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7655
* Fall back select-verification prompts to the secondary LLM instead of the main model by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7657
* Make the copilot's terminal credential ask recoverable by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7656
* Classify auth-gated Copilot actions as login intent so the credential prompt fires at turn start by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7658
* Show the test-run count on the copilot not-confirmed checklist stub by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7659
* fix(SKY-12831): co-locate copilot run-tool narration + name unmapped tools (SKY-12385) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7660
* Deterministic Workday script: fix widget fills + offline regression suite (SKY-12657) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7661
* feat(SKY-12794): keep studio Code a run-view tab; editor Visual/YAML as shared toggles by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7662
* fix(SKY-12848): ignore unmatched VNC touch releases by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7663
* fix(SKY-12416): re-resolve visibility after navigation by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7666
* Add a Past Runs tab to Studio and label the run pane "Run: wr_…" (SKY-12796) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7667
* Bound workflow copilot debug HTML before prompts by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7664
* Wait for disabled controls before browser actions (SKY-12518) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7665
* feat(SKY-12843): eval dashboard screenshot gallery with per-step narration + rubric breakdown by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7669
* SKY-12564 Parameterize witnessed account and month in download filenames by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7670
* Assemble a shadow terminal outcome envelope per copilot turn by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7671
* Sync OpenAPI reference from production by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7672
* Truthful stop copy and honest run-outcome rendering in copilot chat by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7673
* Resolve ambiguous typing targets before input (SKY-12707) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7674
* Route vendor hosted-browser sessions through the CDP proxy behind a flag by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7675
* Add a screenshot side-effect hook to the CDP proxy: capture core, config source, artifact sink by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7676
* Only upload live-view screenshots while someone is actually watching by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7677
* Re-authenticate an expired integration connection in place (SKY-12572) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7680
* Copilot chat reads run-outcome facts from the terminal envelope (SKY-12853 FE) by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7682
* Copilot uses a saved credential matching the login site automatically; credential create/update APIs accept tested_url by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7683
* Let Copilot finish a login it was allowed to start (SKY-12867) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7684
* SKY-12415 Keep date-driven row selection stable as lists change by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7686
* Render the copilot terminal reply from the finalized outcome envelope, behind a flag by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7681
* SKY-12733 Stop correct “no” answers from failing completed workflows by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7688
* Keep real passwords out of generated login code, and stop endless safety-check retries (SKY-12866) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7689
* fix(SKY-12641): give the LLM clear no-file-download feedback by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7690
* Classify scrape timeouts by the run's selected browser engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7691
* Route unsafe checkbox blockers through verified fallback by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7692
* SKY-12858 Copilot: list the steps a draft workflow is missing, and add them back after repeated omissions by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7695
* Stop PBS OTLP span-export error bursts caused by brief node-local collector blips (SKY-12925) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7694
* fix(SKY-12864): tell MCP agents when code-only rejections come from org policy by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7693
* Stop replaying custom-select clicks that may have already changed the page by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7696
* MCP-created code blocks default to the new code block editor experience by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7697
* Deduplicate the MCP block walk and store empty code block goals as NULL by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7698
* SKY-12916 Let Copilot safely continue through login and verification pages by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7699
* Log the copilot terminal render decision per turn (SKY-12853) by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7700
* SKY-12918 Copilot: remember the site from the first message when a follow-up doesn't repeat it by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7701
* Save the workflow instead of giving up when Copilot already found the value (SKY-12907) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7703
* Bound feature-flag flip staleness to snapshot sync (SKY-12962) by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7704
* Remove retired Fern documentation and media (SKY-12972) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7705
* Resolve the output-contract pass path through the single actuation resolver (SKY-12907) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7706
* Classify code-block heal errors by selected engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7707
* Classify vendor CDP errors by selected engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7709
* Classify incremental-tree analysis timeouts by the run's selected browser engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7710
* Classify cached-script timeouts by selected engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7708
* Let Copilot use credentials saved without a login URL (SKY-12959) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7711
* Workday submit: require positive confirmation before marking submitted (SKY-12657) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7712
* SKY-12933 Copilot: build the login step from what the scout demonstrated by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7713
* SKY-12917 Make Copilot credential resolution exhaustive by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7714
* SKY-12957 Copilot: stop asking the user to confirm outputs the request contract already pinned by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7715
* Use current credential scope in deferral gates by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7716
* Add an always-on per-iteration TODO list to the copilot agent prompt by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7717
* Gate AI-fallback completion for the Workday submit block (SKY-12992) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7718
* Keep Copilot tool calls paired during context pruning by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7719
* Remove 34 unreferenced documentation media files by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7721
* docs: serve documentation media from jsDelivr (SKY-12977) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7722
* Stop video-path future poisoning from killing workflow activities and finalize interrupted runs (SKY-12852) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7723
* Remember the target site across turns, including after a cancel (SKY-12968) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7737
* fix(SKY-12998): route verified copilot fixes through the review gate by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7739
* Scan tests/unit for the url-substring anti-pattern before it reaches OSS CodeQL by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7743
* Remove docs/pr-screenshots (internal PR evidence, not docs) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7744
* security: bump body-parser to 1.20.6 to fix two Dependabot alerts by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7626
* Sync OpenAPI reference from production by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7749
* security: bump auth-stack, next, sharp, brace-expansion, postcss, jupyterlab (Dependabot) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7747
* Charge 10 credits per OTP-code parse by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7750
* SKY-12974 Copilot: stop rejecting a saved credential at author time; redact at the log and database seams by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7751
* Add a pure, fail-closed policy core for browser actions by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7753
* Stop banning evaluate in Copilot-authored code blocks; fail closed on unparseable drafts (SKY-13043) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7754
* SKY-12945 Copilot: route the code-authoring guardrail's give-up into the accept-or-build step by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7740
* Add Claude Opus 5 as a selectable model (SKY-13026) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7741
* fix(log-noise): downgrade handled screenshot-timeout from error to warning by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7757
* Bound Redis connect-retry cost and fail open on the browser-address quarantine path by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7766
* Type into the nested input when a card field's wrapper isn't directly fillable (SKY-12448) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7773
* Recover blocked inline PDF downloads when no download event fires by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7774
* Classify non-script post-dispatch click timeouts by selected engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7772
* SKY-12981: invalidate a failed loop block's output to prevent stale prior-iteration reuse by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7775
* CI fix: stabilize test_paused_loop_does_not_trip_total_timeout_on_resume by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7786
* Store blank OTP run-scoping ids as NULL instead of empty strings (SKY-13060) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7784
* SKY-13061: reach reCAPTCHA v2 anchor inside its frame by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7787
* Repair malformed MCP list and timeout arguments by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7765
* Compatibility hotfix: put the input-text runtime hint on the base Action model (SKY-13013) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7777
* Route Workday login to the agent; keep fill/submit deterministic (SKY-12657) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7778
* Copilot: stop discarding saved drafts for reasons the save path only steers on (SKY-13125) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7794
* feat(browser-firewall): hydrate destination facts for forms, tabs, and dialogs (SKY-12875) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7767
* fix: log best-effort error-detection fallbacks at warning not error by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7760
* SKY-13030 Copilot: work out which email address to sign in with instead of demanding a password that cannot exist by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7761
* CI fix: restore monotonic-clock stabilization reverted by #7794 by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7797
* Cap sensitive-artifact TTLs in storage presigned URLs too (SKY-12527) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7789
* Temporarily disable destination-fact capture to stop resolved-URL amplification (SKY-12875) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7770
* SKY-13105 Bound the page read that could hang an entire copilot turn by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7796
* SKY-13000 Copilot: a plain single-value extraction verifies as success instead of "not independently verified" by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7779
* Clarify destination-fact security constraints by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7780
* Stream large captured downloads to disk instead of replaying the body (SKY-12642) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7804
* Bind richer per-selected-engine browser error families (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7801
* Route page.py evaluate/context-loss recovery through the selected browser engine (RUS-5) [R4a] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7811
* Route CDP retry/connection classification through the selected engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7810
* feat: backend activity-driven persistent browser session lease renewal (SKY-10833, SKY-13045) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7813
* migrate dom.py catch sites to selected-engine error identity (SKY-12007) [R5] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7812
* Let copilot exploration solve login CAPTCHAs via the shared solve ladder (SKY-12967) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7755
* Fetch a sign-in code from an email address alone, keeping code-vs-link (SKY-13031) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7756
* Allow clicking through conditional branches in read-only workflow canvases (SKY-12861) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7758
* fix(log-noise): downgrade expected frontend-disconnect in message channel stream by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7759
* SKY-11100: add compute task-type to task_v2 (code-as-action synthesis) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7798
* Eval dashboard: difficulty pills, perf-vs-cost quadrant, copyable task titles by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7799
* Cap screenshot and recording URL lifetime at one hour (SKY-12527) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7788
* SKY-13032 Copilot: only three named checks may refuse to save a workflow; delete the rest by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7791
* Copilot acts on a page by selector only, and reports why an action failed by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7792
* Raise cloud storage block limit to 300 files by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7793
* Report element-tree share and actual drop count when a prompt exceeds the token ceiling (SKY-12350) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7820
* Reject knowably invalid Bitwarden item IDs at workflow run creation by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7819
* Reap orphaned upstream browser sessions from outside the process that holds them (SKY-13158) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7821
* Persist webhook_failure_reason when webhook delivery raises, and name the exception in delivery logs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7818
* Hide Tags, Scripts, and Custom LLMs sections from the API reference (SKY-13151) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7817
* Make row actions visible with a shared kebab + context-menu component (SKY-12955) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7816
* Let normal-select reach 100% without breaking sibling select experiments' control groups by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7815
* Fix end timestamps in code-only runs: finalize uploaded recordings, stamp action times (SKY-13145, SKY-13142) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7814
* Fix finally block failure propagation (SKY-13122) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7809
* Stop rationing copilot page inspection and show the page after acting by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7808
* SKY-13107 Refuse to type a saved credential's secret into a page field by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7807
* Stop logging closed browser targets as screenshot errors (SKY-13058) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7823
* Stop logging an expected analytics serving-table absence as an error by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7824
* SKY-13104 Report page controls the copilot can actually act on by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7806
* SKY-13109 Give block authoring the steps the copilot's scout already demonstrated by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7805
* Stabilize download handler timing tests by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7803
* Stop the unsaved-changes dialog from exiting its navigation blocker twice (SKY-13124) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7825
* Validate the create-from-prompt response shape at the boundary (SKY-13154) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7826
* Fail the run-timeline query when the API returns a non-array payload (SKY-13162) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7827
* Fix failing compute-task safety test on main by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7800
* Delete the copilot repair ceiling: a stuck repair is reported, not a reason to end the turn (SKY-13108) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7802
* Classify closed browser targets during screenshot capture (SKY-12906) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7795
* Show complete six-digit labels on the run outcomes chart by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7783
* Validate destinations on two unguarded browser navigation paths (SKY-13113) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7828
* Route download.path() awaiters through shielded resolve_artifact_path (SKY-12982) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7829
* Revert defineProperty export helper to plain assignment in injected-script wrapper (SKY-12875) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7831
* Redact secret values from exception text at the reporting seams (SKY-12626) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7832
* Polish studio run pane failure UX (SKY-13141) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7830
* SKY-12543: Guard checkbox label fallback from interactive descendants by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7833
* fix: preserve unparsed OTP content for agent-time resolution by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7834
* fix(SKY-12735): preserve open ARIA popups from screenshot-scroll dismissal by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7837
* migrate handler.py canary-critical error catches to selected-engine APIs (SKY-12007) [R6] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7835
* Read adopted-session blob downloads from every open browser tab (SKY-12621) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7838
* Clarify browser session defaults and CAPTCHA solver trade-offs in docs by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7836
* fix(RUS-5): thread selected engine through handler readbacks by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7839
* Render Google Sheets destination dropdown options as single A - Header lines (SKY-13180) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7840
* Fix sequential child runs failing with missing browser page (SKY-13182) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7841
* Route scheduled-run finalizers to the derived run id; classify non-timeout activity failures (SKY-12983) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7842
* fix(RUS-5): thread selected browser engine into remaining elements by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7843
* Scope the task generation cache to the requesting organization (SKY-13102) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7844
* feat: support browser session startup URL by @sardortaylakov in https://github.com/Skyvern-AI/skyvern/pull/7029
* [SKY-12229] Bump mistune to >=3.3.0 for CVE-2026-49851 by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7785
* Restore a local dev path for copilot code-block test runs by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7856
* fix(RUS-5): classify page boundary engine errors by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7861
* fix: ignore unresolved OTP placeholders by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7859
* Collect complete rows from server-windowed virtualized grids by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7863
* feat: enable raw OTP fallback by default, remove TOTP_RAW_FALLBACK_ENABLED by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7866
* feat(SKY-12845): serialize workflow runs by credential (core, non-scheduled) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7865
* fix(openapi): remove orphaned raw TOTP response component by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7867
* SKY-13134: deploy lightweight worker in automatic staging rollout by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7868
* Show what the copilot actually did in its activity feed (SKY-13203) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7869
* SKY-13202 Let the copilot see connected Google and Microsoft accounts by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7871
* Report Copilot test-run failures honestly, and remember ones no later run retried (SKY-13206) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7873
* Resolve Copilot credentials when the login page appears, not only at turn start (SKY-13200) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7878
* fix(RUS-5): preserve pinned selection in handler cleanup paths by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7879
* Give copilot-written sign-in code time to load a slow page (SKY-13208) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7885
* Make Copilot GPT-5.6 cache writes reusable and observable by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7888
* Copilot: credit working runs and retire the authoring guards that failed them by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7845
* build(deps): non-default rustwright dependency group + lock guard (RUS-5) [R1] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7870
* Match the Azure OpenAI host, not a URL substring by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7898
* Parse ZIP unzip-only: File Parser always outputs extracted file list for ZIPs (SKY-13279) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7899
* Copy icon on hover for every JSON tree viewer node (SKY-13286) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7900
* API docs sync: cap browser session lifetime at 4 hours by @mintlify[bot] in https://github.com/Skyvern-AI/skyvern/pull/7887
* SKY-13243 Generalize 2FA email scanning into a source registry with Outlook support by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7901
* Recover adopted-session blob downloads by reading bytes at the download event (SKY-12621) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7902
* Stop a Python comment from killing an entire code block (SKY-13300) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7903
* Overlay the hover drag grip on the block card gutter instead of reserving header space (SKY-13289) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7904
* SKY-13244 Select a connected email account as the 2FA identifier (re-land) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7905
* Increase loop block iteration limit from 500 to 1000 (SKY-13310) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7907
* SKY-13245 Add Magic Link tab to the Credentials page (re-land) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7908
* Reconcile the strict synthesis partition at one accounting point (SKY-13207) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7909
* Keep a Copilot turn in the chat when the server restarts mid-turn (SKY-13205) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7911
* Deliver the download instead of shipping a draft the build test disproved (SKY-13230) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7914
* Report code-block browser failures by their real cause, not as unsupported operations by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7913
* Tell the user when a copilot turn runs out of time, and log every timeout (SKY-13249) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7927
* Split login from data extraction when the scout demonstrated a credentialed flow by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7934
* Route reasoning_effort via extra_body on the partner-hosted DeepSeek config (SKY-12750) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7938
* Route non-mutating requests to answer-only Copilot turns by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7939
* Redact secrets in run artifacts: HAR/console scrubbing, LLM-boundary redaction, visual input masking (SKY-11822) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7940
* Let an MCP agent wait on two page states at once (SKY-13252) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7941
* Count the two-state wait as an observation (SKY-13252 follow-up) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7942
* Attach at-failure screenshot and final URL to failed code blocks (SKY-13250) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7943
* Expose 1Password and Bitwarden MCP endpoints by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7945
* Fix Cmd+V paste into the VNC live browser stream on macOS (SKY-13324) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7944
* fix(credentials): delete-path follow-ups from #14215 review (SKY-13271) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7946
* Add a Gemini API flex-tier config for gemini-3.1-flash-lite by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7949
* Add LLM experiment launch gates: OpenRouter provider routing, pinned DeepSeek 0731 key, multi-arm analyzer by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7950
* Materialize the updated row before commit so artifact URI writes stop raising MissingGreenlet (SKY-13354) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7951
* fix: log per-poll OTP webhook fetch failure at warning not error by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7952
* fix(tasks): cancel-button gating, webhook-replay runId, google-oauth valid flag by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7953
* Downgrade setup_workflow_run client-4xx failures from error+traceback to warning (SKY-13284) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7954
* Add per-workflow Mask Secrets advanced setting (SKY-11822) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7955
* Use the existing runaway guard for the download-handler wait timeouts by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7958
* fix(SKY-13182): recover a live tab-less inherited browser instead of orphaning it by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7960
* Redact bearer auth headers and serialized payloads from error logs (SKY-13195) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7961
* Validate shared browser navigation destinations and revalidate redirect hops (SKY-13112) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7962
* Bind the URL-matched saved credential when the agent observes a login page (SKY-13293) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7966
* Bind credential fill to the live page origin by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7967
* Let organizations default their runs to custom Smart/Fast LLMs from settings (SKY-13343) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7968
* Document unbound credential denial and remove the credential-fill test shim by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7969
* Bind protected references to trusted consumers (SKY-12876) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7970
* Constrain DOM reads and inventory browser-effect sinks by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7971
* SKY-13353 Follow Copilot test runs in Live Browser by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7972
* fix(frontend): stop reporting GitHub star-count rate-limit as a client error by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7974
* fix(SKY-13335): emit secure CodeBlock runner telemetry on the success path by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7975
* Return standalone (dedented) code from the MCP code-block synthesize tool (#SKY-13336) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7976
* Add flag-gated skip of the check-user-goal LLM call for cached-script runs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7977
* Fail run closed when the CodeBlock auto-provisioned browser session cannot be created (#SKY-13334) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7978
* Fix browser session download fail-silents (SKY-13385) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7979
* Bind terminal persistence and webhook callbacks (SKY-12887) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7980
* Deliver the MCP user-agent header so MCP-triggered runs persist trigger_type=mcp by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7982
* SKY-13097 Apply billing + rate-limit guards to task endpoints by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7984
* SKY-13100 Bound gzip decompression in browser recording processing by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7985
* Revert "Add flag-gated skip of the check-user-goal LLM call for cached-script runs" by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7986
* fix(SKY-13101): documented webhook verifier now rejects forged signatures by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7987
* Bound destination-fact resolution work and re-enable capture (SKY-12875) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7988
* Resolve the effective form action once and stop nested budget replenish (SKY-12875) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7989
* Add live view to the browser infrastructure capability table by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7991
* Block internal navigation hops before the browser follows them (SKY-13377) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7992
* feat(SKY-12845): credential run-sequentially toggle in edit UI by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7995
* Execute the deterministic custom-select collapse for input_text entries with strict entry-scoped verification by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7996
* Probe inherited-browser transport liveness before reusing a page-less browser by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7997
* Move New profile to the top of the browser-profile dropdown by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7998
* Keep the copilot Explore phase active while the scout is still logging in by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7999
* Show the centered loading indicator while a run resolves (SKY-13416) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8000
* Exclude login-cookie sidecars from fresh browser profiles (start_fresh cross-org leak) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8001
* Resolve the login-block credential the same way at run setup and mid-run by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8002
* Recover soft-deleted Key Vault secrets before updates by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8003
* Revert "Block internal navigation hops before the browser follows them (SKY-13377)" by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8004
* Scope the Copilot sandbox gate to code-bearing drafts and make the refusal terminal by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8005
* Give recorded and compute-generated code blocks the new code block shape (SKY-13185) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8006
* Recover adopted-session statement downloads from live and transient PDF blobs (SKY-12621) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8007
* Add atomic one-shot browser effect approvals by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8008
* Shared destructive-confirm dialog primitive + standardized wording (SKY-12989) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8009
* Bound LLM provider calls on the direct client path with a real wall-clock deadline by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/8010
* Register OpenAI-direct and Azure GPT-5.6 rates from separate tables by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/8011
* Return a card-connected credential as a typed id and bind its login origin (SKY-13432) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8013
* Pin vendor identity non-disclosure across customer-facing surfaces (SKY-13266) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7990
* Skip the empty-downloads S3 LIST fallback for post-cutover runs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7983
* Route script-assist LLM calls through the per-prompt model config flag by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/8015
* Persist vendor live-view metadata securely by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8014
* Drop never-deployed CDP route env overrides and share one rollout gate by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8017
* limit workflow status fetch concurrency by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8018
* Fail fast on oversized workflow branch context by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8016
* Retain vendor browser recordings after session teardown (SKY-13262) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8019
* fix: keep second status batch unbounded in workflow status response by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8020
* Capture downloads from adopted vendor browser sessions (SKY-13263) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8021
* Fix MCP-created sessions for code-only workflows (#SKY-13338) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8022
* Freeze the wall clock in the select-option widened-shape test (SKY-12634) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8023
* Restore the message field and organization_id on foreign stdlib log records by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8024
* fix(SKY-13415): hide the copilot rollup chevron when expansion adds no content by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8025
* Show a searchable org-credential picker for copilot credential asks (SKY-12832) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8026
* fix: reap browser sessions whose runnable owner type cannot be resolved by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8027
* Fix email OTP code persistence, expected-type enforcement, and sign-in link recall by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8028
* Return the number a user asked for, not the one beside it (SKY-13226) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8029
* Carry the typed CodeBlock runner error code onto the block result (SKY-13469) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8030
* Stacked: cross-process PBS reads (SKY-13473), fail-closed script execution, vendor teardown budget by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8032
* Open a tab when a code block's browser session has none (SKY-13338) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8033
* Retry a CodeBlock browser session that times out starting instead of failing the run by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8034
* fix: emit copilot session ID in CodeBlock logs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8035
* Give each code-block engine its own failure reason when it cannot open a tab (SKY-13338) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8036
* Validate deployed script content before persistence (SKY-13066) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8037
* Require explicit cloud URL opt-in by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8038
* Validate caller-supplied CDP addresses and withhold the org key from remote endpoints (SKY-13067) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8039
* Prefer the Playwright error name in tab-open failure reasons (SKY-13338 follow-up) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8042
* Validate navigation destinations in the MCP browser tools (SKY-13070) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8041
* fix(SKY-13502): report a closed browser session as closed instead of high demand by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8043
* Stabilize screencast timeout test by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8044
* Validate browser navigation destinations (SKY-13070) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8045
* test: preserve SKY-13495 review coverage in the OSS-synced tree by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8046
* Enforce administrator roles on sensitive organization APIs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8047
* Revert "Enforce administrator roles on sensitive organization APIs" by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8050
* Refuse non-http(s) navigation URLs before consulting DNS (SKY-13070) by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/8051
* Use the saved login someone picked, instead of asking for it again (SKY-13483) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8052
* SKY-10678 Let a diagnosis turn repair the run it just read by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8053
* Bump version to 1.0.48 by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/8031
## New Contributors
* @sardortaylakov made their first contribution in https://github.com/Skyvern-AI/skyvern/pull/7029
**Full Changelog**: https://github.com/Skyvern-AI/skyvern/compare/v1.0.47...v1.0.48