Overview
Remote code execution via URL is controlled by:- Request fields (
codeUrl,codeHash,allowInsecureCodeUrl) - CLI flags (
--url,--github,--gist,--hash,--allow-insecure-code-url) - Policy config (
remoteCodeinisol8.config.json)
Enable In Config
Remote URL fetching is disabled by default. Enable it inisol8.config.json:
CLI Usage
TypeScript API
Policy Fields
Enables remote source fetching. If false,
codeUrl requests are rejected.Allowed URL schemes for source fetches.
Regex allowlist for hostnames. Empty means all hosts are allowed unless blocked.
Regex blocklist for hostnames. Applied before execution to reduce SSRF risk.
Maximum source size in bytes. Fetch aborts if exceeded.
Timeout for source download.
Requires
codeHash on every URL-based execution.Cache toggle for remote source policy.
Cache TTL in seconds for remote source policy.
Security Model
Remote source fetching includes:- Scheme checks (
httpsby default) - Host allow/block regex checks
- DNS/IP checks that block loopback/private/link-local targets
- Size limits and fetch timeout enforcement
- UTF-8 decoding + binary-content rejection
- SHA-256 integrity verification when
codeHashis provided (or required)
Interaction With Runtime Network Flags
remoteCode controls pre-execution source download.--net, --allow, and --deny control network access from code running inside the container.
They are separate controls and should be configured independently.
Server Mode
When usingisol8 serve + RemoteIsol8, URL fetching happens on the server side.The server policy (
remoteCode in server config) is what enforces URL restrictions.
Recommended Production Baseline
remoteCode.enabled: trueallowedSchemes: ["https"]- Restrictive
allowedHosts requireHash: true- Conservative
maxCodeSizeandfetchTimeoutMs - Use immutable references (commit SHAs/tags), not mutable branches