Repository navigation
fix: harden runtime option handling - #11141
Conversation
Greptile SummaryThis update strengthens runtime option handling across Axios adapters. Direct HTTP/2 requests with Confidence Score: 5/5Safe to merge based on the exercised HTTP/2 proxy-disable and Fetch option-resolution behaviors. No blocking failure remains.
What T-Rex did
Reviews (7): Last reviewed commit: "test: clarify unsafe prototype fixtures" | Re-trigger Greptile |
There was a problem hiding this comment.
All reported issues were addressed across 20 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 8 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 6 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
Raises axios from ^1.18.0 (resolving to 1.19.0) to ^1.20.0, addressing the runtime-option prototype-pollution hardening in axios PR #11141 (axios/axios#11141). Verified via GitHub's official Releases API and the PR's "Intentional compatibility changes" list that none of the documented behavior changes (interceptor replacement objects, custom Fetch adapter second argument, maxRedirects: 0, explicit proxy objects over HTTP/2, data-URI parsing) apply to this repo's usage, which is limited to plain axios.get/axios.post calls with the default browser XHR adapter in the auth service files.
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [axios](https://axios-http.com) ([source](https://github.com/axios/axios)) | [`1.18.1` → `1.20.0`](https://renovatebot.com/diffs/npm/axios/1.18.1/1.20.0) |  |  | --- >⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/99) for more information. --- ### Release Notes <details> <summary>axios/axios (axios)</summary> ### [`v1.20.0`](https://github.com/axios/axios/releases/tag/v1.20.0) [Compare Source](axios/axios@v1.19.0...v1.20.0) #### v1.20.0 — August 19, 2026 This release hardens runtime option handling, adds RFC 9110 status-code aliases, fixes Node.js and XHR reliability issues, and refreshes project tooling and documentation. ####⚠️ Breaking Changes & Deprecations - HTTP Status Naming: Added ContentTooLarge (413) and UnprocessableContent (422), while retaining PayloadTooLarge and UnprocessableEntity as backward-compatible deprecated aliases. ([#​11082](axios/axios#11082)) #### 🔒 Security Fixes - Runtime Option Handling: Hardened behavioral configuration reads against shared and foreign prototype pollution and normalized unsafe interceptor replacement objects. This also clarifies Fetch redirect and custom implementation behavior, HTTP/2 DNS and proxy handling, CIDR-based NO_PROXY matching, and malformed data URI rejection; see the PR for documented compatibility effects. ([#​11141](axios/axios#11141)) #### 🐛 Bug Fixes - Interceptor Lifecycle: Prevented unbounded handler-array growth by trimming trailing ejected interceptors without changing iteration semantics, and kept interceptor operations safe when the public handlers field is nullish. ([#​11087](axios/axios#11087), [#​11118](axios/axios#11118)) - Request Error Preservation: Prevented custom Error.prepareStackTrace implementations that return non-string values from replacing the original request failure with an unrelated TypeError. ([#​11109](axios/axios#11109)) - XHR Reliability: Navigation-canceled requests now reject with ECONNABORTED instead of resolving with status 0, while successful downloads flush their final progress callback during the live loadend dispatch. ([#​11094](axios/axios#11094), [#​11121](axios/axios#11121)) - Node.js Socket Memory: Removed request-context retention from per-socket error listeners, preventing completed response data from being pinned for the lifetime of pooled keep-alive sockets. ([#​11091](axios/axios#11091)) - Core Methods and HTTP Errors: Prevented structural method-header buckets from leaking into outgoing headers, standardized invalid DNS lookup and httpVersion failures as AxiosError.ERR_BAD_OPTION_VALUE, and corrected the timeoutErrorMessage merge strategy. ([#​11096](axios/axios#11096)) #### 🔧 Maintenance & Chores - Dependencies: Updated fast-uri, postcss, js-yaml, mocha, development-tooling groups, and GitHub Actions dependencies. ([#​11092](axios/axios#11092), [#​11098](axios/axios#11098), [#​11099](axios/axios#11099), [#​11106](axios/axios#11106), [#​11107](axios/axios#11107), [#​11122](axios/axios#11122), [#​11123](axios/axios#11123), [#​11126](axios/axios#11126), [#​11127](axios/axios#11127), [#​11133](axios/axios#11133), [#​11140](axios/axios#11140), [#​11143](axios/axios#11143), [#​11144](axios/axios#11144)) - Documentation: Applied the v1.19.0 documentation updates, added the missing fs import to the README stream example, introduced localized global search, and repaired the interceptor test link. ([#​11101](axios/axios#11101), [#​11113](axios/axios#11113), [#​11097](axios/axios#11097), [#​11119](axios/axios#11119)) - Sponsorship: Updated sponsorship links and data and added ScrapingBee as a sponsor. ([#​11124](axios/axios#11124), [#​11136](axios/axios#11136), [#​11137](axios/axios#11137)) - CI and Release: Switched ESM smoke tests to locked dependencies and synchronized package and runtime version metadata for v1.20.0. ([#​11128](axios/axios#11128), [#​11152](axios/axios#11152)) #### 🌟 New Contributors We are thrilled to welcome our new contributors. Thank you for helping improve axios: - [@​yens1](https://github.com/yens1) ([#​11109](axios/axios#11109)) - [@​Sasireddy001](https://github.com/Sasireddy001) ([#​11113](axios/axios#11113)) - [@​ari-token-security](https://github.com/ari-token-security) ([#​11094](axios/axios#11094)) - [@​timothyokooboh](https://github.com/timothyokooboh) ([#​11097](axios/axios#11097)) - [@​gi9439041-png](https://github.com/gi9439041-png) ([#​11119](axios/axios#11119)) - [@​Hashim1999164](https://github.com/Hashim1999164) ([#​11082](axios/axios#11082)) - [@​v-dev-cl](https://github.com/v-dev-cl) ([#​11091](axios/axios#11091)) - [@​r0h1tb](https://github.com/r0h1tb) ([#​11118](axios/axios#11118)) - [@​ostapondo](https://github.com/ostapondo) ([#​11121](axios/axios#11121)) Full Changelog (<axios/axios@v1.19.0...v1.20.0>) ### [`v1.19.0`](https://github.com/axios/axios/blob/HEAD/CHANGELOG.md#v1190--July-22-2026) [Compare Source](axios/axios@v1.18.1...v1.19.0) This release raises the form-data security floor, adds configuration and type-system capabilities, and fixes NO_PROXY matching, interceptor errors, progress reporting, and serialization edge cases. </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "before 9am on tuesday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzMuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjE2NC41IiwidGFyZ2V0QnJhbmNoIjoiZGV2ZWxvcCIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiLCJyZW5vdmF0ZSJdfQ==--> Reviewed-on: https://code.futo.org/harbor/harbor/pulls/1808
Summary
Harden runtime option handling against shared-prototype pollution and make Fetch, HTTP/2, proxy bypass, and data URI behavior consistent across supported runtimes.
Linked issue
N/A
Changes
Object.prototypewhen its mutableconstructorproperty has been changed, deleted, or replaced by an accessor.response.config.Requestobjects to custom Fetch implementations and honormaxRedirects: 0with manual redirects.NO_PROXYand harden malformed data URI parsing.Intentional compatibility changes
instanceofbranding, accessor placement, and descriptor attributes are not retained.Request. Those fields are omitted from the second safefetchOptionsargument; custom implementations that inspected the second argument must migrate to theRequest.maxRedirects: 0now prevents redirect following. Node may expose the unfollowed 3xx response, while browsers may expose an opaque redirect with status0and inaccessible headers.ERR_NOT_SUPPORTinstead of being silently ineffective.ERR_INVALID_URL.Object.create(null)config template are excluded because such a template cannot be distinguished safely from a mutated foreignObject.prototype.NO_PROXY=0.0.0.0/0bypasses proxying for all IPv4 destinations, andNO_PROXY=::/0does the same for IPv6.HTTP/2 proxy policy residual
HTTP/2 remains direct when proxy policy exists only in process environment variables or an HTTP/1 agent's
proxyEnv, becausehttp2.connect()cannot apply those proxy mechanisms. Deployments that require proxying as an egress boundary should not treat this change as full HTTP/2 proxy-policy enforcement.Validation
git diff --checkpassed.Checklist
Semantic version impact
Security/runtime hardening with intentional compatibility changes documented above; this PR does not claim complete backward compatibility.