Bumps [axios](https://github.com/axios/axios) from 1.9.0 to 1.12.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/axios/axios/releases">axios's releases</a>.</em></p> <blockquote> <h2>Release v1.12.0</h2> <h2>Release notes:</h2> <h3>Bug Fixes</h3> <ul> <li>adding build artifacts (<a href="9ec86de257">9ec86de</a>)</li> <li>dont add dist on release (<a href="a2edc3606a">a2edc36</a>)</li> <li><strong>fetch-adapter:</strong> set correct Content-Type for Node FormData (<a href="https://redirect.github.com/axios/axios/issues/6998">#6998</a>) (<a href="a9f47afbf3">a9f47af</a>)</li> <li><strong>node:</strong> enforce maxContentLength for data: URLs (<a href="https://redirect.github.com/axios/axios/issues/7011">#7011</a>) (<a href="945435fc51">945435f</a>)</li> <li>package exports (<a href="https://redirect.github.com/axios/axios/issues/5627">#5627</a>) (<a href="aa78ac23fc">aa78ac2</a>)</li> <li><strong>params:</strong> removing '[' and ']' from URL encode exclude characters (<a href="https://redirect.github.com/axios/axios/issues/3316">#3316</a>) (<a href="https://redirect.github.com/axios/axios/issues/5715">#5715</a>) (<a href="6d84189349">6d84189</a>)</li> <li>release pr run (<a href="fd7f404488">fd7f404</a>)</li> <li><strong>types:</strong> change the type guard on isCancel (<a href="https://redirect.github.com/axios/axios/issues/5595">#5595</a>) (<a href="0dbb7fd4f6">0dbb7fd</a>)</li> </ul> <h3>Features</h3> <ul> <li><strong>adapter:</strong> surface low‑level network error details; attach original error via cause (<a href="https://redirect.github.com/axios/axios/issues/6982">#6982</a>) (<a href="78b290c57c">78b290c</a>)</li> <li><strong>fetch:</strong> add fetch, Request, Response env config variables for the adapter; (<a href="https://redirect.github.com/axios/axios/issues/7003">#7003</a>) (<a href="c959ff2901">c959ff2</a>)</li> <li>support reviver on JSON.parse (<a href="https://redirect.github.com/axios/axios/issues/5926">#5926</a>) (<a href="2a9763426e">2a97634</a>), closes <a href="https://redirect.github.com/axios/axios/issues/5924">#5924</a></li> <li><strong>types:</strong> extend AxiosResponse interface to include custom headers type (<a href="https://redirect.github.com/axios/axios/issues/6782">#6782</a>) (<a href="7960d34ede">7960d34</a>)</li> </ul> <h3>Contributors to this release</h3> <ul> <li><!-- raw HTML omitted --> <a href="https://github.com/WillianAgostini" title="+132/-16760 ([#7002](https://github.com/axios/axios/issues/7002) [#5926](https://github.com/axios/axios/issues/5926) [#6782](https://github.com/axios/axios/issues/6782) )">Willian Agostini</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/DigitalBrainJS" title="+4263/-293 ([#7006](https://github.com/axios/axios/issues/7006) [#7003](https://github.com/axios/axios/issues/7003) )">Dmitriy Mozgovoy</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/mkhani01" title="+111/-15 ([#6982](https://github.com/axios/axios/issues/6982) )">khani</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/AmeerAssadi" title="+123/-0 ([#7011](https://github.com/axios/axios/issues/7011) )">Ameer Assadi</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/emiedonmokumo" title="+55/-35 ([#6998](https://github.com/axios/axios/issues/6998) )">Emiedonmokumo Dick-Boro</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/opsysdebug" title="+8/-8 ([#6980](https://github.com/axios/axios/issues/6980) )">Zeroday BYTE</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/jasonsaayman" title="+7/-7 ([#6985](https://github.com/axios/axios/issues/6985) [#6985](https://github.com/axios/axios/issues/6985) )">Jason Saayman</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/HealGaren" title="+5/-7 ([#5715](https://github.com/axios/axios/issues/5715) )">최예찬</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/gligorkot" title="+3/-1 ([#5627](https://github.com/axios/axios/issues/5627) )">Gligor Kotushevski</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/adimit" title="+2/-1 ([#5595](https://github.com/axios/axios/issues/5595) )">Aleksandar Dimitrov</a></li> </ul> <h2>Release v1.11.0</h2> <h2>Release notes:</h2> <h3>Bug Fixes</h3> <ul> <li>form-data npm pakcage (<a href="https://redirect.github.com/axios/axios/issues/6970">#6970</a>) (<a href="e72c193722">e72c193</a>)</li> <li>prevent RangeError when using large Buffers (<a href="https://redirect.github.com/axios/axios/issues/6961">#6961</a>) (<a href="a2214ca1bc">a2214ca</a>)</li> <li><strong>types:</strong> resolve type discrepancies between ESM and CJS TypeScript declaration files (<a href="https://redirect.github.com/axios/axios/issues/6956">#6956</a>) (<a href="8517aa16f8">8517aa1</a>)</li> </ul> <h3>Contributors to this release</h3> <ul> <li><!-- raw HTML omitted --> <a href="https://github.com/izzygld" title="+186/-93 ([#6970](https://github.com/axios/axios/issues/6970) )">izzy goldman</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/manishsahanidev" title="+70/-0 ([#6961](https://github.com/axios/axios/issues/6961) )">Manish Sahani</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/noritaka1166" title="+12/-10 ([#6938](https://github.com/axios/axios/issues/6938) [#6939](https://github.com/axios/axios/issues/6939) )">Noritaka Kobayashi</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/jrnail23" title="+13/-2 ([#6956](https://github.com/axios/axios/issues/6956) )">James Nail</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/Tejaswi1305" title="+1/-1 ([#6894](https://github.com/axios/axios/issues/6894) )">Tejaswi1305</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/axios/axios/blob/v1.x/CHANGELOG.md">axios's changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/axios/axios/compare/v1.11.0...v1.12.0">1.12.0</a> (2025-09-11)</h1> <h3>Bug Fixes</h3> <ul> <li>adding build artifacts (<a href="9ec86de257">9ec86de</a>)</li> <li>dont add dist on release (<a href="a2edc3606a">a2edc36</a>)</li> <li><strong>fetch-adapter:</strong> set correct Content-Type for Node FormData (<a href="https://redirect.github.com/axios/axios/issues/6998">#6998</a>) (<a href="a9f47afbf3">a9f47af</a>)</li> <li><strong>node:</strong> enforce maxContentLength for data: URLs (<a href="https://redirect.github.com/axios/axios/issues/7011">#7011</a>) (<a href="945435fc51">945435f</a>)</li> <li>package exports (<a href="https://redirect.github.com/axios/axios/issues/5627">#5627</a>) (<a href="aa78ac23fc">aa78ac2</a>)</li> <li><strong>params:</strong> removing '[' and ']' from URL encode exclude characters (<a href="https://redirect.github.com/axios/axios/issues/3316">#3316</a>) (<a href="https://redirect.github.com/axios/axios/issues/5715">#5715</a>) (<a href="6d84189349">6d84189</a>)</li> <li>release pr run (<a href="fd7f404488">fd7f404</a>)</li> <li><strong>types:</strong> change the type guard on isCancel (<a href="https://redirect.github.com/axios/axios/issues/5595">#5595</a>) (<a href="0dbb7fd4f6">0dbb7fd</a>)</li> </ul> <h3>Features</h3> <ul> <li><strong>adapter:</strong> surface low‑level network error details; attach original error via cause (<a href="https://redirect.github.com/axios/axios/issues/6982">#6982</a>) (<a href="78b290c57c">78b290c</a>)</li> <li><strong>fetch:</strong> add fetch, Request, Response env config variables for the adapter; (<a href="https://redirect.github.com/axios/axios/issues/7003">#7003</a>) (<a href="c959ff2901">c959ff2</a>)</li> <li>support reviver on JSON.parse (<a href="https://redirect.github.com/axios/axios/issues/5926">#5926</a>) (<a href="2a9763426e">2a97634</a>), closes <a href="https://redirect.github.com/axios/axios/issues/5924">#5924</a></li> <li><strong>types:</strong> extend AxiosResponse interface to include custom headers type (<a href="https://redirect.github.com/axios/axios/issues/6782">#6782</a>) (<a href="7960d34ede">7960d34</a>)</li> </ul> <h3>Contributors to this release</h3> <ul> <li><!-- raw HTML omitted --> <a href="https://github.com/WillianAgostini" title="+132/-16760 ([#7002](https://github.com/axios/axios/issues/7002) [#5926](https://github.com/axios/axios/issues/5926) [#6782](https://github.com/axios/axios/issues/6782) )">Willian Agostini</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/DigitalBrainJS" title="+4263/-293 ([#7006](https://github.com/axios/axios/issues/7006) [#7003](https://github.com/axios/axios/issues/7003) )">Dmitriy Mozgovoy</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/mkhani01" title="+111/-15 ([#6982](https://github.com/axios/axios/issues/6982) )">khani</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/AmeerAssadi" title="+123/-0 ([#7011](https://github.com/axios/axios/issues/7011) )">Ameer Assadi</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/emiedonmokumo" title="+55/-35 ([#6998](https://github.com/axios/axios/issues/6998) )">Emiedonmokumo Dick-Boro</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/opsysdebug" title="+8/-8 ([#6980](https://github.com/axios/axios/issues/6980) )">Zeroday BYTE</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/jasonsaayman" title="+7/-7 ([#6985](https://github.com/axios/axios/issues/6985) [#6985](https://github.com/axios/axios/issues/6985) )">Jason Saayman</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/HealGaren" title="+5/-7 ([#5715](https://github.com/axios/axios/issues/5715) )">최예찬</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/gligorkot" title="+3/-1 ([#5627](https://github.com/axios/axios/issues/5627) )">Gligor Kotushevski</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/adimit" title="+2/-1 ([#5595](https://github.com/axios/axios/issues/5595) )">Aleksandar Dimitrov</a></li> </ul> <h1><a href="https://github.com/axios/axios/compare/v1.10.0...v1.11.0">1.11.0</a> (2025-07-22)</h1> <h3>Bug Fixes</h3> <ul> <li>form-data npm pakcage (<a href="https://redirect.github.com/axios/axios/issues/6970">#6970</a>) (<a href="e72c193722">e72c193</a>)</li> <li>prevent RangeError when using large Buffers (<a href="https://redirect.github.com/axios/axios/issues/6961">#6961</a>) (<a href="a2214ca1bc">a2214ca</a>)</li> <li><strong>types:</strong> resolve type discrepancies between ESM and CJS TypeScript declaration files (<a href="https://redirect.github.com/axios/axios/issues/6956">#6956</a>) (<a href="8517aa16f8">8517aa1</a>)</li> </ul> <h3>Contributors to this release</h3> <ul> <li><!-- raw HTML omitted --> <a href="https://github.com/izzygld" title="+186/-93 ([#6970](https://github.com/axios/axios/issues/6970) )">izzy goldman</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/manishsahanidev" title="+70/-0 ([#6961](https://github.com/axios/axios/issues/6961) )">Manish Sahani</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/noritaka1166" title="+12/-10 ([#6938](https://github.com/axios/axios/issues/6938) [#6939](https://github.com/axios/axios/issues/6939) )">Noritaka Kobayashi</a></li> <li><!-- raw HTML omitted --> <a href="https://github.com/jrnail23" title="+13/-2 ([#6956](https://github.com/axios/axios/issues/6956) )">James Nail</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="0d8ad6e1de"><code>0d8ad6e</code></a> chore(release): v1.12.0 (<a href="https://redirect.github.com/axios/axios/issues/7013">#7013</a>)</li> <li><a href="fd7f404488"><code>fd7f404</code></a> fix: release pr run</li> <li><a href="a2edc3606a"><code>a2edc36</code></a> fix: dont add dist on release</li> <li><a href="9ec86de257"><code>9ec86de</code></a> fix: adding build artifacts</li> <li><a href="945435fc51"><code>945435f</code></a> fix(node): enforce maxContentLength for data: URLs (<a href="https://redirect.github.com/axios/axios/issues/7011">#7011</a>)</li> <li><a href="28e5e3016d"><code>28e5e30</code></a> chore(sponsor): update sponsor block (<a href="https://redirect.github.com/axios/axios/issues/7005">#7005</a>)</li> <li><a href="d03f245a40"><code>d03f245</code></a> chore(CI): fixed release info script to use npm registry instead of git as fi...</li> <li><a href="a0bc911379"><code>a0bc911</code></a> chore: removing dist files from src (<a href="https://redirect.github.com/axios/axios/issues/7002">#7002</a>)</li> <li><a href="c959ff2901"><code>c959ff2</code></a> feat(fetch): add fetch, Request, Response env config variables for the adapte...</li> <li><a href="a9f47afbf3"><code>a9f47af</code></a> fix(fetch-adapter): set correct Content-Type for Node FormData (<a href="https://redirect.github.com/axios/axios/issues/6998">#6998</a>)</li> <li>Additional commits viewable in <a href="https://github.com/axios/axios/compare/v1.9.0...v1.12.0">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/infiniflow/ragflow/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
RAGFlow Sandbox
A secure, pluggable code execution backend for RAGFlow and beyond.
🔧 Features
- ✅ Seamless RAGFlow Integration — Out-of-the-box compatibility with the
codecomponent. - 🔐 High Security — Leverages gVisor for syscall-level sandboxing.
- 🔧 Customizable Sandboxing — Easily modify
seccompsettings as needed. - 🧩 Pluggable Runtime Support — Easily extend to support any programming language.
- ⚙️ Developer Friendly — Get started with a single command using
Makefile.
🏗 Architecture
🚀 Quick Start
📋 Prerequisites
Required
- Linux distro compatible with gVisor
- gVisor
- Docker >=
24.0.0 - Docker Compose >=
v2.26.1like RAGFlow - uv as package and project manager
Optional (Recommended)
- GNU Make for simplified CLI management
🐳 Build Docker Base Images
We use isolated base images for secure containerized execution:
# Build base images manually
docker build -t sandbox-base-python:latest ./sandbox_base_image/python
docker build -t sandbox-base-nodejs:latest ./sandbox_base_image/nodejs
# OR use Makefile
make build
Then, build the executor manager image:
docker build -t sandbox-executor-manager:latest ./executor_manager
📦 Running with RAGFlow
-
Ensure gVisor is correctly installed.
-
Configure your
.envindocker/.env:- Uncomment sandbox-related variables.
- Enable sandbox profile at the bottom.
-
Add the following line to
/etc/hostsas recommended:127.0.0.1 sandbox-executor-manager -
Start RAGFlow service.
🧭 Running Standalone
Manual Setup
-
Initialize environment:
cp .env.example .env -
Launch:
docker compose -f docker-compose.yml up -
Test:
source .venv/bin/activate export PYTHONPATH=$(pwd) uv pip install -r executor_manager/requirements.txt uv run tests/sandbox_security_tests_full.py
With Make
make # setup + build + launch + test
📈 Monitoring
docker logs -f sandbox-executor-manager # Manual
make logs # With Make
🧰 Makefile Toolbox
| Command | Description |
|---|---|
make |
Setup, build, launch and test all at once |
make setup |
Initialize environment and install uv |
make ensure_env |
Auto-create .env if missing |
make ensure_uv |
Install uv package manager if missing |
make build |
Build all Docker base images |
make start |
Start services with safe env loading and testing |
make stop |
Gracefully stop all services |
make restart |
Shortcut for stop + start |
make test |
Run full test suite |
make logs |
Stream container logs |
make clean |
Stop and remove orphan containers and volumes |
🔐 Security
The RAGFlow sandbox is designed to balance security and usability, offering solid protection without compromising developer experience.
✅ gVisor Isolation
At its core, we use gVisor, a user-space kernel, to isolate code execution from the host system. gVisor intercepts and restricts syscalls, offering robust protection against container escapes and privilege escalations.
🔒 Optional seccomp Support (Advanced)
For users who need zero-trust-level syscall control, we support an additional seccomp profile. This feature restricts containers to only a predefined set of system calls, as specified in executor_manager/seccomp-profile-default.json.
⚠️ This feature is disabled by default to maintain compatibility and usability. Enabling it may cause compatibility issues with some dependencies.
To enable seccomp
-
Edit your
.envfile:SANDBOX_ENABLE_SECCOMP=true -
Customize allowed syscalls in:
executor_manager/seccomp-profile-default.jsonThis profile is passed to the container with:
--security-opt seccomp=/app/seccomp-profile-default.json
🧠 Python Code AST Inspection
In addition to sandboxing, Python code is statically analyzed via AST (Abstract Syntax Tree) before execution. Potentially malicious code (e.g. file operations, subprocess calls, etc.) is rejected early, providing an extra layer of protection.
This security model strikes a balance between robust isolation and developer usability. While seccomp can be highly restrictive, our default setup aims to keep things usable for most developers — no obscure crashes or cryptic setup required.
📦 Add Extra Dependencies for Supported Languages
Currently, the following languages are officially supported:
| Language | Priority |
|---|---|
| Python | High |
| Node.js | Medium |
🐍 Python
To add Python dependencies, simply edit the following file:
sandbox_base_image/python/requirements.txt
Add any additional packages you need, one per line (just like a normal pip requirements file).
🟨 Node.js
To add Node.js dependencies:
-
Navigate to the Node.js base image directory:
cd sandbox_base_image/nodejs -
Use
npmto install the desired packages. For example:npm install lodash -
The dependencies will be saved to
package.jsonandpackage-lock.json, and included in the Docker image when rebuilt.
Usage
🐍 A Python example
def main(arg1: str, arg2: str) -> str:
return f"result: {arg1 + arg2}"
🟨 JavaScript examples
A simple sync function
function main({arg1, arg2}) {
return arg1+arg2
}
Async funcion with aioxs
const axios = require('axios');
async function main() {
try {
const response = await axios.get('https://github.com/infiniflow/ragflow');
return 'Body:' + response.data;
} catch (error) {
return 'Error:' + error.message;
}
}
📋 FAQ
❓Sandbox Not Working?
Follow this checklist to troubleshoot:
-
Is your machine compatible with gVisor?
Ensure that your system supports gVisor. Refer to the gVisor installation guide.
-
Is gVisor properly installed?
Common error:
HTTPConnectionPool(host='sandbox-executor-manager', port=9385): Read timed out.Cause:
runscis an unknown or invalid Docker runtime. Fix:-
Install gVisor
-
Restart Docker
-
Test with:
docker run --rm --runtime=runsc hello-world
-
-
Is
sandbox-executor-managermapped in/etc/hosts?Common error:
HTTPConnectionPool(host='none', port=9385): Max retries exceeded.Fix:
Add the following entry to
/etc/hosts:127.0.0.1 es01 infinity mysql minio redis sandbox-executor-manager -
Have you enabled sandbox-related configurations in RAGFlow?
Double-check that all sandbox settings are correctly enabled in your RAGFlow configuration.
-
Have you pulled the required base images for the runners?
Common error:
HTTPConnectionPool(host='sandbox-executor-manager', port=9385): Read timed out.Cause: no runner was started.
Fix:
Pull the necessary base images:
docker pull infiniflow/sandbox-base-nodejs:latest docker pull infiniflow/sandbox-base-python:latest -
Did you restart the service after making changes?
Any changes to configuration or environment require a full service restart to take effect.
❓Container pool is busy?
All available runners are currently in use, executing tasks/running code. Please try again shortly, or consider increasing the pool size in the configuration to improve availability and reduce wait times.
🤝 Contribution
Contributions are welcome!