v1.0.49
microsoft/markitdownv1.0.49Aug 18, 2026by github-actions[bot]
AI Summary
Skyvern v1.0.49 continues the v1.0.48 series with fixes for Copilot workflows, browser session handling, and Task V3 observation capabilities.
Key Highlights
- Copilot workflow fixes to stop re-deciding login blocks already present.
- Improved browser session management including cookie jar banking.
- Recovery of blank multi-entry Workday sections.
- Fixes for CDP input and display-capture workers.
New Features
- Add a credential Advanced toggle to opt out of automatic browser profiles.
- Let users opt out of automatic browser-profile saving per credential.
- Copilot run rows read as plain language instead of Playwright selectors.
Full Release Notes
## What's Changed Version bumped from 1.0.48 to 1.0.49 ### Recent Changes - Bump version to 1.0.49 (#8227) (c53ec6dca) - fix(frontend): render the UTC hover timestamp in UTC, not local time (#7193) (ef7b59bdc) - docs(aws): drop stale client parameter from get_file_metadata docstring (#7150) (0e5deae9d) - Recover tenant phone formats deterministically and stop re-clicking committed skill pills (#8216) (05f36a42b) - Recover blank multi-entry Workday sections via section-scoped add-control fallback (#8215) (586015645) - SKY-14046 Let Copilot test-run a workflow whose login step already has a saved credential (#8214) (4caac995a) - Prevent oversized logs from splitting into error fragments (#8213) (2dd95060c) - Fix SkyCDP reload document lifecycle race (#8212) (f4fe10b07) - Remove three Copilot sign-in fields that were always false (SKY-14054) (#8211) (0cbfce0b8) - SKY-13777 Stop telling the copilot that a challenge on the page closes the submit path (#8210) (05d4b9764) - Match Playwright selector-engine semantics in the skycdp facade (SKY-13461) (#8209) (c658bc9eb) - Downloads-only CDP interception when the egress monitor is unenrolled (SKY-14066) (#8208) (8d6418564) - Bill fair-share pod time, not wall clock, on multi-activity pods (SKY-14049) (#8207) (e4e41a8a7) - SKY-14045 Copilot: stop re-deciding login blocks the workflow already has (#8206) (6dc0104f5) - SKY-14044 Add an add_block tool so Copilot stops re-sending the whole workflow to add one step (#8205) (595cad7bb) - SKY-14047 Copilot: require credential approval only for the blocks a test run will execute (#8204) (e7434da6e) - Recover Task v2 summary deliverable when the LLM skips the response envelope (SKY-14004) (#8203) (4a62365f5) - Drop the unused drive.file scope from the Google Sheets consent screen (SKY-13427) (#8202) (dba2ceb4b) - Give Task V3 observe the question context it drops (curb get_html spam) (#8201) (7d7ff3461) - Let Copilot use a connected inbox for sign-in codes, not just saved credentials (#8200) (22a3292f8) - SKY-13979: derive the extraction schema instead of asking to confirm it (#8199) (7138ce878) - Add ask-calibration eval dataset for the workflow copilot (SKY-13981) (#8198) (a783de833) - Stop reporting browser-extension clipboard refusals as frontend errors (SKY-13996) (#8196) (357b92a16) - SKY-14030: isolate disabled-control retry cadence (#8195) (6ec6a21f4) - SKY-14030: isolate Vaadin polling cadence (#8194) (9c26da339) - Reap a run-owned external browser immediately when its owner goes terminal (SKY-13546) (#8193) (2e07bafc5) - Bound the Hetzner attach lane's scaler ceiling to its node pool (SKY-14022) (#8192) (5de740283) - fix(ci): read the OSS sync high-water mark from commits, not the PR body (#8191) (af02e59ce) - Use one rolling branch for OSS sync PRs (#8186) (27f89abbd) - Preserve database timeouts during idempotent workflow creation (#8183) (41a4a5c5a) - Deduplicate copilot credential field sentinel sets (#8182) (eaccc7d88) - Revert the browser prompt-injection defenses, keeping the download authorization seam (#8140) (30b566fb8) - Expose MCP code block goals and migration guidance (#8145) (a6b1f31a1) - fix(execution-channel): release adopted browser_state on every exit (#8112) (9a3d1b1b0) - SKY-13612: Fix ZIP payload type so the OSS sync build typechecks (#8136) (579d46344) - Deflake quickstart capture_logs tests against shard-order structlog state (#8110) (09f586580) - fix(SKY-13634): stop the copilot without replaying, locking, or faking failure (#8137) (c13d20729) - Keep the copilot auto-bind credential receipt at its original position (SKY-13636) (#8138) (2f61e243e) - docs: fix CLI references and broken links in README/CONTRIBUTING/CLAUDE.md (#7948) (7e07a80a4) - Bank the live cookie jar when saving a browser profile mid-run; clear crashed-exit markers on load (#8097) (ee7576e08) - Stop display-capture workers publishing black frames over remote-browser livestreams (SKY-13699) (#8147) (2d0b9b013) - Extract externalized Gmail OTP body parts so magic-link emails parse with their body (#8091) (c13617047) - Serve live view for externally hosted browser sessions via per-session CDP screencast (SKY-13291) (#8101) (e829eb819) - fix(SKY-13728): contain Recordings tab overflow and fix tab hierarchy (#8156) (afa70441b) - fix(SKY-13729): consolidate browser session status to the DS Badge (#8155) (49a6b7507) - Fix Bitwarden credential fetch failing when a saved login has no two-factor secret (SKY-13676) (#8103) (e9d3cc8be) - Gate the four task_v2 planner levers behind one org-scoped flag (SKY-13239) (#8150) (f8d51d872) - SKY-13612: Bulk agent export emits one ZIP with individual per-agent files (#8105) (ae3b857f0) - Regenerate the OpenAPI document for the browser session stream_transport field (#8102) (6cbe7f42d) - Secure and automate Chrome extension re-pairing (#8149) (192d3d557) - Classify the remaining secure CodeBlock runner error codes out of UNKNOWN (SKY-13561) (#8081) (a3ce92fde) - SKY-13605: sanitize local lane fallback browser creation errors (#8093) (b65ef9241) - fix(SKY-13730): remove duplicate logo from browser session header (#8154) (0cdcaf050) - SKY-13584 persist workflow run browser runtime and fallback signals (#8092) (f0a98e392) - Open a named site from its credential's login page instead of asking for a URL (#8099) (aa10a95cb) - Mediate browser and CDP downloads (#8135) (3e8f015f6) - feat: harden browser prompt injection defenses (#8133) (fa75db9b6) - fix(SKY-13721): give the initial browser-session load a real spinner (#8157) (8ccec8949) - Shorten the VNC disconnect message to two sentences (#SKY-13720) (#8159) (3fe6159b6) - fix(cdp-input): release adopted browser_state on every teardown path (#8111) (93863d003) - SKY-13503 deduplicate credential placeholder sentinels (#8141) (eca3bc167) - fix(SKY-13725): use destructive styling for the Stop action (#8153) (c56a015bc) - fix: exclude dev_scripts-dependent tests from OSS sync (#8184) (7cf050ee1) - Collapse the two code-block env settings into one tri-state (SKY-13242) (#8152) (65b9bebb4) - feat(SKY-13761): enable the standalone codeblock-runner on AWS staging/production (#8177) (cb9d09615) - Default MCP YAML workflows to code version 2 (#8148) (3aa597aa4) - test(mcp): gate extension bridge and coordinate regressions (#8100) (da93935cb) - Bound per-value size of run-detail API payloads (SKY-13015) (#8119) (258125eeb) - fix(cdp-input): Delete key does nothing in hosted browser live view (SKY-13682) (#8114) (a35d34362) - Survive browser-extension bridge port contention at MCP boot (SKY-13645) (#8098) (9bcc6a962) - fix(SKY-13585): allow saving a conditional whose merge point is the finally block (#8096) (77aab67fb) - Revalidate revoked API keys immediately (#8126) (90da0e970) - feat(live-view): add navigable URL input to hosted browser sessions (SKY-13683) (#8143) (0cce7304f) - Add a credential Advanced toggle to opt out of automatic browser profiles (frontend) (#8146) (409ebc58d) - Let users opt out of automatic browser-profile saving per credential (backend) (#8144) (9fab94983) - Copilot run rows read as plain language, not Playwright selectors (SKY-13637) (#8142) (713d18074) - SKY-13187 ADR: contain generated cached scripts by mint-time validation (Family B) (#8113) (039c5e15f) - Handle download-directory containment rejection in the action path (SKY-13390) (#8127) (f0c90e3a6) - Track which browser profile a boot actually applied; stop silent seed drops (SKY-13545) (#8095) (220a4a5a6) - Demote per-step 'Video data not found' warning to debug (#8088) (c355f2045) - Adopt the Chrome Web Store extension identity and add store packaging (SKY-13555) (#8086) (828cc1530) - SKY-13591: Cut Python CI cost with whole-file duration balancing (#8085) (8375d1739) - Document the SKY-13575 artifact-URL remint recovery step and close the #14589 review follow-ups (#8087) (bfbc62a08) - Refuse CLI credentials against the silent production default, everywhere a client is built (SKY-13500) (#8083) (bee072c08) - SKY-13782 Surface partial download-save failures so the binding verdict abstains instead of failing the block (#8176) (7b57efb73) - fix(SKY-13697): disable Done until the debug session's browser session id resolves (#8178) (e0e15964d) - Fix flaky broker spawn cooldown that leaked extra daemon launches (#8173) (70154bcda) - Re-sign first-party artifact URLs whose signature no longer verifies (SKY-13575) (#8082) (82e8237e4) - Append the exception class to code-block tab-open failure reasons (SKY-13338 follow-up) (#8040) (da19129d8) - fix(SKY-13587): keep the finally block out of conditional branch containers (#8130) (da9b8327e) - Request only the current integration's Google OAuth scopes on the consent screen (#8129) (b7742b5b1) - fix(SKY-13722): remove unnecessary border from browser session header (#8161) (59ac8db50) - Fix main: point 4 copilot enforcement tests at the renamed nudge helper (SKY-13692) (#8128) (bb0d5b624) - fix(SKY-13586): stop the editor flagging a finally block as a disconnected block (#8131) (3f610aeb0) - Fix mislabeled enforcement telemetry and trim 366 redundant copilot tests (#8077) (ab3744a62) - Revalidate redirect hops on the remaining navigation sinks (SKY-13070) (#8054) (a5a3741f8) - Serve MCP initialize without waiting on extension-mode startup side work (SKY-13758) (#8175) (b914f3b8b) - Share the browser-extension bridge across concurrent agents (SKY-13757) (#8172) (9ec8f1b23) - Bound workflow idempotency waits (SKY-13795) (#8174) (cb6583018) - fix(SKY-13726): align timeline empty state with sibling tab pattern (#8160) (9a6fbe3ed) - Run file parsing off the event loop so the workflow activity keeps heartbeating (SKY-13574) (#8132) (0b36693c0) - Fix docs canonical base: Mintlify drops the /docs hosting prefix from page paths (#8171) (12095631a) - Remove Workflow Copilot request-policy classifier pre-pass (#8169) (c7bb0081c) - Close out the apex cutover: record the permanent 308 and point docs canonicals at www (#8168) (6a32247f5) - Don't lose the record of a downloaded file when a code block fails or auto-recovers (SKY-13694) (#8167) (a043dbb09) - Stop the copilot being cut off mid-repair after 35 model calls (SKY-13734) (#8166) (3c0d5da84) - Let the copilot save an edit to a login step without logging in again (SKY-13709) (#8162) (bd7f9fb61) - Surface DataTables Select row-checkbox cells in the element tree (SKY-13560) (#8151) (b471155b5) - Stop Copilot from continuing after a successful workflow run (#8122) (2c8c5561a) - Let the copilot finish download requests instead of stalling at the results page (#8125) (ac5959e4e) - feat(browser-engine): enable Rustwright on both image lanes with classical fallback (RUS-5 v2) (#8123) (3c2bed171) - Add fail-closed dice-image captcha solve path (#8124) (0b68a5526) - fix: preserve provider-owned remote download handling (#8115) (1948de79c) - fix: qualify shared browser ownership with live run context (#8121) (c2c2633f8) - fix: close browsers when only same-run aliases remain (#8118) (4888e45dd) - fix: self-heal free-text input truncated by the fill/type seam (#8116) (d5a842419) - SKY-13536 Copilot: solve captchas met while exploring, instead of asking the user (#8078) (d89cb8d5f) - SKY-13553 Copilot: release a credential onto any site the user named, in words or a link, from any turn (#8079) (a1bf13726) - Name a new agent as soon as the user says what they want (#8084) (acb2580f0) - Copilot keeps the code it wrote when editing a workflow; spreadsheet writes fail instead of appending blanks (SKY-13624) (#8104) (416ab0322) - Stop re-sending outdated copies of the copilot's draft code to the model (SKY-13652) (#8106) (3b04388e4) - SKY-13579 Copilot: recognize a saved credential by its name, however the message is phrased (#8107) (62bca008a) - Copilot: stop refusing the credential scouting the credential check requires (SKY-13609) (#8089) (c95a99199) - Copilot: recognize a credential ID someone pasted, however the message is worded (#8094) (a03968cb3) - Revert #14581: restore scout-before-code; credential-ID fix returns after the interaction is fixed (#8090) (3c3a10835) - Copilot: use the credential ID someone pasted, however they worded the message (SKY-13552) (#8076) (dfe02ce8a) - Fix extension bridge reconnect wedge and CDP child-target hang (SKY-13562) (#8075) (6e237f261) - Serve the browser a scoped session token instead of the organization API key (SKY-13084) (#8074) (fa4319e5d) - Classify secure CodeBlock runner fail-closed as an infrastructure error (#8073) (0e5ae31a6) - Capture download-wait error overlays that animate in after insertion (#8072) (3140edda2) - SKY-13518: Stop asserting a minted run as browser-session owner in run_sdk_action (#8071) (2f46c1287) - Control your own browser from Skyvern MCP via a Chrome extension bridge (SKY-13370) (#8070) (37e5a145b) - Re-arm the sequential-gate wait every 900s instead of 120s (#8069) (b76a8f711) - Probe viewer presence via a shared S3 marker so Hetzner pools keep live-view gating (#8068) (f4aaec05b) - fix(SKY-13445): render interim copilot build-test runs neutrally, not as an amber outcome warning (#8067) (d044bec7f) - Render the login block URL before the credential profile boot (SKY-13479) (#8066) (8fe813439) - Show a copilot receipt for a silently auto-bound credential, with Change to correct it (#8065) (79242f083) - Stamp a read-only auto-bind credential signal on the copilot narrative stream (#8064) (38d2d8a92) - Flush the downloaded profile archive before unzipping it (#8063) (e17cf26c7) - Store OTP/magic-link values verbatim instead of LLM-retyped (fixes magic-link 400s) (#8062) (b31f2dd64) - Copilot: stop asking permission for a saved login the workflow already provides (#SKY-13514) (#8061) (036e24571) - SKY-13517 Stop ending the copilot's turn because a page looked blocked (#8060) (6ca0f9d9e) - Bound the minted-session ledgers and cover the CDP fan-out with a two-client test (#8059) (d5dabbb3f) - SKY-13485 Copilot: bind a requested output to the value on screen, and append to the column you pinned (#8058) (9eeafa6f8) - Fail closed on sandbox facade denials, and collapse the runner's three failure channels into one (#8057) (523228e7a) - Resolve credential-equal workflow inputs via placeholder tokens in the planning prompt (#8056) (9c6003c71) - Give late-connecting CDP clients their own page sessions on a shared browser (#8055) (5a2dc37d5) - [Database] Fix: use portable distinct step count (#7769) (679cafb03) - docs: fix scheduling examples to use client.schedules API (#7924) (0a9df4899) **Full Changelog**: https://github.com/Skyvern-AI/skyvern/compare/v1.0.48...v1.0.49 ## What's Changed * docs: fix scheduling examples to use client.schedules API by @latent-9 in https://github.com/Skyvern-AI/skyvern/pull/7924 * [Database] Fix: use portable distinct step count by @Heman10x-NGU in https://github.com/Skyvern-AI/skyvern/pull/7769 * Give late-connecting CDP clients their own page sessions on a shared browser by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8055 * Resolve credential-equal workflow inputs via placeholder tokens in the planning prompt by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8056 * Fail closed on sandbox facade denials, and collapse the runner's three failure channels into one by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8057 * SKY-13485 Copilot: bind a requested output to the value on screen, and append to the column you pinned by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8058 * Bound the minted-session ledgers and cover the CDP fan-out with a two-client test by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8059 * SKY-13517 Stop ending the copilot's turn because a page looked blocked by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8060 * Copilot: stop asking permission for a saved login the workflow already provides (#SKY-13514) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8061 * Store OTP/magic-link values verbatim instead of LLM-retyped (fixes magic-link 400s) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8062 * Flush the downloaded profile archive before unzipping it by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8063 * Stamp a read-only auto-bind credential signal on the copilot narrative stream by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8064 * Show a copilot receipt for a silently auto-bound credential, with Change to correct it by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8065 * Render the login block URL before the credential profile boot (SKY-13479) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8066 * fix(SKY-13445): render interim copilot build-test runs neutrally, not as an amber outcome warning by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8067 * Probe viewer presence via a shared S3 marker so Hetzner pools keep live-view gating by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/8068 * Re-arm the sequential-gate wait every 900s instead of 120s by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/8069 * Control your own browser from Skyvern MCP via a Chrome extension bridge (SKY-13370) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/8070 * SKY-13518: Stop asserting a minted run as browser-session owner in run_sdk_action by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8071 * Capture download-wait error overlays that animate in after insertion by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8072 * Classify secure CodeBlock runner fail-closed as an infrastructure error by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8073 * Serve the browser a scoped session token instead of the organization API key (SKY-13084) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8074 * Fix extension bridge reconnect wedge and CDP child-target hang (SKY-13562) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/8075 * Copilot: use the credential ID someone pasted, however they worded the message (SKY-13552) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8076 * Revert #14581: restore scout-before-code; credential-ID fix returns after the interaction is fixed by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8090 * Copilot: recognize a credential ID someone pasted, however the message is worded by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8094 * Copilot: stop refusing the credential scouting the credential check requires (SKY-13609) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8089 * SKY-13579 Copilot: recognize a saved credential by its name, however the message is phrased by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8107 * Stop re-sending outdated copies of the copilot's draft code to the model (SKY-13652) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8106 * Copilot keeps the code it wrote when editing a workflow; spreadsheet writes fail instead of appending blanks (SKY-13624) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8104 * Name a new agent as soon as the user says what they want by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8084 * SKY-13553 Copilot: release a credential onto any site the user named, in words or a link, from any turn by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8079 * SKY-13536 Copilot: solve captchas met while exploring, instead of asking the user by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8078 * fix: self-heal free-text input truncated by the fill/type seam by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8116 * fix: close browsers when only same-run aliases remain by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8118 * fix: qualify shared browser ownership with live run context by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8121 * fix: preserve provider-owned remote download handling by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8115 * Add fail-closed dice-image captcha solve path by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8124 * feat(browser-engine): enable Rustwright on both image lanes with classical fallback (RUS-5 v2) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8123 * Let the copilot finish download requests instead of stalling at the results page by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8125 * Stop Copilot from continuing after a successful workflow run by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8122 * Surface DataTables Select row-checkbox cells in the element tree (SKY-13560) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8151 * Let the copilot save an edit to a login step without logging in again (SKY-13709) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8162 * Stop the copilot being cut off mid-repair after 35 model calls (SKY-13734) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8166 * Don't lose the record of a downloaded file when a code block fails or auto-recovers (SKY-13694) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8167 * Close out the apex cutover: record the permanent 308 and point docs canonicals at www by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/8168 * Remove Workflow Copilot request-policy classifier pre-pass by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8169 * Fix docs canonical base: Mintlify drops the /docs hosting prefix from page paths by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/8171 * Run file parsing off the event loop so the workflow activity keeps heartbeating (SKY-13574) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8132 * fix(SKY-13726): align timeline empty state with sibling tab pattern by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8160 * Bound workflow idempotency waits (SKY-13795) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8174 * Share the browser-extension bridge across concurrent agents (SKY-13757) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8172 * Serve MCP initialize without waiting on extension-mode startup side work (SKY-13758) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8175 * Revalidate redirect hops on the remaining navigation sinks (SKY-13070) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8054 * Fix mislabeled enforcement telemetry and trim 366 redundant copilot tests by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8077 * fix(SKY-13586): stop the editor flagging a finally block as a disconnected block by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8131 * Fix main: point 4 copilot enforcement tests at the renamed nudge helper (SKY-13692) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8128 * fix(SKY-13722): remove unnecessary border from browser session header by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8161 * Request only the current integration's Google OAuth scopes on the consent screen by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8129 * fix(SKY-13587): keep the finally block out of conditional branch containers by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8130 * Append the exception class to code-block tab-open failure reasons (SKY-13338 follow-up) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8040 * Re-sign first-party artifact URLs whose signature no longer verifies (SKY-13575) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8082 * Fix flaky broker spawn cooldown that leaked extra daemon launches by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8173 * fix(SKY-13697): disable Done until the debug session's browser session id resolves by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8178 * SKY-13782 Surface partial download-save failures so the binding verdict abstains instead of failing the block by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8176 * Refuse CLI credentials against the silent production default, everywhere a client is built (SKY-13500) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8083 * Document the SKY-13575 artifact-URL remint recovery step and close the #14589 review follow-ups by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8087 * SKY-13591: Cut Python CI cost with whole-file duration balancing by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/8085 * Adopt the Chrome Web Store extension identity and add store packaging (SKY-13555) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/8086 * Demote per-step 'Video data not found' warning to debug by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/8088 * Track which browser profile a boot actually applied; stop silent seed drops (SKY-13545) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8095 * Handle download-directory containment rejection in the action path (SKY-13390) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8127 * SKY-13187 ADR: contain generated cached scripts by mint-time validation (Family B) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8113 * Copilot run rows read as plain language, not Playwright selectors (SKY-13637) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8142 * Let users opt out of automatic browser-profile saving per credential (backend) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8144 * Add a credential Advanced toggle to opt out of automatic browser profiles (frontend) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8146 * feat(live-view): add navigable URL input to hosted browser sessions (SKY-13683) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8143 * Revalidate revoked API keys immediately by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8126 * fix(SKY-13585): allow saving a conditional whose merge point is the finally block by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8096 * Survive browser-extension bridge port contention at MCP boot (SKY-13645) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/8098 * fix(cdp-input): Delete key does nothing in hosted browser live view (SKY-13682) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8114 * Bound per-value size of run-detail API payloads (SKY-13015) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8119 * test(mcp): gate extension bridge and coordinate regressions by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/8100 * Default MCP YAML workflows to code version 2 by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/8148 * feat(SKY-13761): enable the standalone codeblock-runner on AWS staging/production by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8177 * Collapse the two code-block env settings into one tri-state (SKY-13242) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8152 * fix: exclude dev_scripts-dependent tests from OSS sync by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/8184 * fix(SKY-13725): use destructive styling for the Stop action by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8153 * SKY-13503 deduplicate credential placeholder sentinels by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8141 * fix(cdp-input): release adopted browser_state on every teardown path by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8111 * Shorten the VNC disconnect message to two sentences (#SKY-13720) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8159 * fix(SKY-13721): give the initial browser-session load a real spinner by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8157 * feat: harden browser prompt injection defenses by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8133 * Mediate browser and CDP downloads by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8135 * Open a named site from its credential's login page instead of asking for a URL by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8099 * SKY-13584 persist workflow run browser runtime and fallback signals by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8092 * fix(SKY-13730): remove duplicate logo from browser session header by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8154 * SKY-13605: sanitize local lane fallback browser creation errors by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8093 * Classify the remaining secure CodeBlock runner error codes out of UNKNOWN (SKY-13561) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8081 * Secure and automate Chrome extension re-pairing by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/8149 * Regenerate the OpenAPI document for the browser session stream_transport field by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8102 * SKY-13612: Bulk agent export emits one ZIP with individual per-agent files by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8105 * Gate the four task_v2 planner levers behind one org-scoped flag (SKY-13239) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8150 * Fix Bitwarden credential fetch failing when a saved login has no two-factor secret (SKY-13676) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8103 * fix(SKY-13729): consolidate browser session status to the DS Badge by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8155 * fix(SKY-13728): contain Recordings tab overflow and fix tab hierarchy by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8156 * Serve live view for externally hosted browser sessions via per-session CDP screencast (SKY-13291) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8101 * Extract externalized Gmail OTP body parts so magic-link emails parse with their body by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8091 * Stop display-capture workers publishing black frames over remote-browser livestreams (SKY-13699) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8147 * Bank the live cookie jar when saving a browser profile mid-run; clear crashed-exit markers on load by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8097 * docs: fix CLI references and broken links in README/CONTRIBUTING/CLAUDE.md by @FixedStarXH in https://github.com/Skyvern-AI/skyvern/pull/7948 * Keep the copilot auto-bind credential receipt at its original position (SKY-13636) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8138 * fix(SKY-13634): stop the copilot without replaying, locking, or faking failure by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8137 * Deflake quickstart capture_logs tests against shard-order structlog state by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/8110 * SKY-13612: Fix ZIP payload type so the OSS sync build typechecks by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8136 * fix(execution-channel): release adopted browser_state on every exit by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8112 * Expose MCP code block goals and migration guidance by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/8145 * Revert the browser prompt-injection defenses, keeping the download authorization seam by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8140 * Deduplicate copilot credential field sentinel sets by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8182 * Preserve database timeouts during idempotent workflow creation by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8183 * Use one rolling branch for OSS sync PRs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8186 * fix(ci): read the OSS sync high-water mark from commits, not the PR body by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8191 * Bound the Hetzner attach lane's scaler ceiling to its node pool (SKY-14022) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8192 * Reap a run-owned external browser immediately when its owner goes terminal (SKY-13546) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8193 * SKY-14030: isolate Vaadin polling cadence by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8194 * SKY-14030: isolate disabled-control retry cadence by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8195 * Stop reporting browser-extension clipboard refusals as frontend errors (SKY-13996) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8196 * Add ask-calibration eval dataset for the workflow copilot (SKY-13981) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8198 * SKY-13979: derive the extraction schema instead of asking to confirm it by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8199 * Let Copilot use a connected inbox for sign-in codes, not just saved credentials by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8200 * Give Task V3 observe the question context it drops (curb get_html spam) by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/8201 * Drop the unused drive.file scope from the Google Sheets consent screen (SKY-13427) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8202 * Recover Task v2 summary deliverable when the LLM skips the response envelope (SKY-14004) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/8203 * SKY-14047 Copilot: require credential approval only for the blocks a test run will execute by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8204 * SKY-14044 Add an add_block tool so Copilot stops re-sending the whole workflow to add one step by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8205 * SKY-14045 Copilot: stop re-deciding login blocks the workflow already has by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8206 * Bill fair-share pod time, not wall clock, on multi-activity pods (SKY-14049) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/8207 * Downloads-only CDP interception when the egress monitor is unenrolled (SKY-14066) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/8208 * Match Playwright selector-engine semantics in the skycdp facade (SKY-13461) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/8209 * SKY-13777 Stop telling the copilot that a challenge on the page closes the submit path by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8210 * Remove three Copilot sign-in fields that were always false (SKY-14054) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8211 * Fix SkyCDP reload document lifecycle race by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8212 * Prevent oversized logs from splitting into error fragments by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8213 * SKY-14046 Let Copilot test-run a workflow whose login step already has a saved credential by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8214 * Recover blank multi-entry Workday sections via section-scoped add-control fallback by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8215 * Recover tenant phone formats deterministically and stop re-clicking committed skill pills by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8216 * docs(aws): drop stale client parameter from get_file_metadata docstring by @anxkhn in https://github.com/Skyvern-AI/skyvern/pull/7150 * fix(frontend): render the UTC hover timestamp in UTC, not local time by @anxkhn in https://github.com/Skyvern-AI/skyvern/pull/7193 * Bump version to 1.0.49 by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/8227 ## New Contributors * @latent-9 made their first contribution in https://github.com/Skyvern-AI/skyvern/pull/7924 * @Heman10x-NGU made their first contribution in https://github.com/Skyvern-AI/skyvern/pull/7769 * @FixedStarXH made their first contribution in https://github.com/Skyvern-AI/skyvern/pull/7948 * @anxkhn made their first contribution in https://github.com/Skyvern-AI/skyvern/pull/7150 **Full Changelog**: https://github.com/Skyvern-AI/skyvern/compare/v1.0.48...v1.0.49