All notable changes for the Superblocks' On-Premise Agent will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Upgrade
vm2to latest version (v3.10.5) - Add Snowflake Postgres support
- Add plugin support for
snowflakecortexintegration
- Security patches
- Add
atobandbtoapolyfills to the WASM sandbox - Added option to route all control flow related resolution of bindings to the WASM sandbox
- Python worker bug fixes
- Add
superblocks.auditLogs.enabledhelm value to allow disabling audit log ingestion (defaults to enabled) - Add Workforce Identity Federation support for BigQuery
- Add Databricks Lakebase integration
- Upgrade vm2 to latest version (
3.10.4) with fix for CVE-2026-22709
- Add support for
parametersarray in SQL plugins for parameterized queries - Add support for file uploads in 2.0 apps
- Require authorization header for inline definitions in
/v2/execute,/v2/execute/stream, and/v2/execute/twowayendpoints to prevent anonymous code execution while still allowing public apps (fetch by ID) to work - Upgrade Go 1.25.1 → 1.25.5, golang.org/x/crypto v0.41.0 → v0.45.0, golang.org/x/sync v0.17.0 → v0.18.0, golang.org/x/text v0.28.0 → v0.31.0 and run
apt-get upgrade -yin Dockerfiles to resolve CVEs. - Do not fail when primitive values are used as inputs to Python APIs, similar to JavaScript APIs
- Validate view mode against profiles for API execution with provided definition
- Restrict access to blocked packages in JavaScript steps via: dynamic import,
eval, and Function constructors - Update JavaScript worker to execute language steps within
vm2 - Support generating presigned PUT URLs for s3
- Add support for Kubernetes Gateway API as an alternative to Ingress for routing traffic to the agent
- Update FilePicker download endpoint to ensure requested download paths are under the temp directory
- Add WASM-based sandbox using QuickJS for more secure JavaScript binding resolution
- Require authorization header for
/v2/testendpoint to prevent unauthenticated environment variable access - Enforce WASM sandbox memory limit for host-side allocations
- Pass a memory limit to the WASM sandbox
- Control the WASM bindings sandbox rollout via LaunchDarkly
- Add
Dateobject marshalling support in WASM sandbox (Dateobjects are now preserved when passing between host and VM in both directions). - Add
JavaScriptWASMplugin type for executing pure JS steps within the WASM sandbox.
- Add support for restricting imports and built in functions in Python language execution steps
- Properly clear the environment of Python execution step sandboxes
- Add retry logic to Databricks metadata requests in case of rate-limiting
- Update VM2 to patch vulnerability
- Upgraded Python OTel libraries to v1.16.0
- Add (plugin) support for
openai_v2based integrations
- Set a default password for the agent's internal redis instance
- Use Databricks Unity Catalog to fetch metadata via REST
- Disable script and function execution in the agent's redis server
- Add support for setting a password for the default user in the agent's redis server
- Upgraded Redis to ^v8.2.2, with patch for CVE-2025-49844
- Updated Databricks integration
testto timeout after 5000ms
- Added support for header value prefix in auth injection flow
- Added support of Oauth Token Federation auth for Databricks
- Fixed new bindings syntax support for bindings that require legacy resolution and an expression in the template literal contains the token separator string (i.e.
", ")- e.g.
${JSON.stringify({ name: "test", enabled: true })}
- e.g.
- Added support for "oauth on behalf of token exchange" in Salesforce integration
- Added support for the
metadataendpoint in the GraphQL integration - Added support for custom SubjectTokenType on "oauth on behalf of token exchange" flows
- Updated types for Salesforce integration to support "oauth on behalf of token exchange"
- Added types support for new Confluence integration
- Added support for custom object schemas in Salesforce
- Added flag
agent.plugins.auth.validate_subject_token_during_obo_flow.enabledto determine whether we should validate the subject token during "oauth on behalf of token exchange" flows
- Fixed workflow steps in path based apis to execute the desired workflow as expected (previously failed with
NotFoundError) - Added support for new JavaScript template literals bindings syntax in arguments for workflows
- Fixed
return,sendandwaitblocks functionality when using new bindings syntax (JavaScript template literal or IIFE) - Added preview scoped token type
- Updated scoped token claims to match the claims provided by the server (where the JWTs are generated)
- Updated binding resolution to treat entire fields in APIs as bindings for APIs fetched by path
- Fix binding resolution of template literals for plugins requiring legacy binding resolution (i.e. JavaScript worker performs binding resolution)
- Fix an issue where workflow parameters could be referenced unsafely causing a panic
- Fail silently when trying to delete a GSheets integration that has already been revoked
- Switch to using pointers for custom JWT claims in JWT middleware and scoped token permissions JWTs
- Add raw JWT to Go context when using the scoped permissions JWT validators
- Updated the flow for detecting if JWT middleware should be used
- Updated execution inputs to use
Global.userderived from Superblocks JWT - Updated claims required to be present in a JWT for agent authorization
- Updated the "oauth on behalf of token exchange" flow to use the identity provider access token from the Superblocks JWT instead of from the Auth0 JWT
- Changed token scopes to match existing RBAC permissions
- Added support for scoped (JWT) tokens with multiple scopes
- Added support for API-level authorization
- Added support for resolving integration configurations using the new (JavaScript template literals) bindings syntax
- Included azure blob storage and azure identities libraries to python worker
- Generalized JWT middleware to allow for better reusability across repositories (moved agent specific validation to internal package)
- Overwrite the default
requirements.txtfile with the contents of the desired requirements file (only affectsslimvariant and custom image builds) - Added scoped permission JWT types and validators to orchestrator
- Updated Auth Code/Password Grant flows to enable bindings in certain fields
- Updated
slimimage builds to supportpackage-slim.jsonfiles in anyworker.jssubdirectory - Added
slimvariant topackages/plugins/javascriptpackage (i.e.package-slim.json) which keeps only dependencies required for binding resolution - Added
SUPERBLOCKS_AGENT_REDIS_SOCKET_TIMEOUT_SECONDSto configure socket timeout for Redis client in Python worker - Update OPA Dockerfile's
WORKER_JS_PREPARE_FS_ARGSargument's default value to match value for buildingslimvariant - Update OPA variants doc with new arguments for building
standard/slimvariants - Fix the agent Helm Chart to support gRPC routes
- Fix OOM from reusing Javascript context within an API's binding resolutions
- Added support for fetching (and executing) APIs referenced by application ID and path, rather than by api ID
- Fixed bug in building query parameters list for DB plugins leveraging '?' placeholder syntax (repeated bindings fix)
- Bump golang version to 1.23.7
- Added support for referencing dynamic workflow response as {{credentials.response}}
- Updated Snowflake integration to not include
INFORMATION_SCHEMAdata in metadata - Updated Snowflake integration to pipe through database, schema, warehouse, and role for key-pair and sso auth types
- Updated
slimimage to only include JavaScript packages required to run the JavaScript worker - Added support for performing new "oauth on behalf of token exchange" auth type
- Added support for static subject token sources in "oauth2 on-behalf-of token exchange" auth type
- Updated token forwarding auth type with IDP subject tokens to explicitly fail for workflows and scheduled jobs
- Added support for "authTypeField" in integration OAuth flow
- Updated Snowflake integration to support "oauth2 on-behalf-of token exchange" auth type
- Explicitly shutdown prometheus metrics server when Python worker terminates
- Update
CheckAuthto support integration configurations using the OAuth on-behalf-of token exchange auth type - Updated Snowflake node sdk to
v1.15.0and disabled OCSP checking when connecting to Snowflake
- Added support for creating a worksheet in GSheets integration
- Refactor
launchdarklyclient to separate wrapper around LaunchDarkly SDK into its own package separate from the interface for agent specific flags - Fixed bug in Redis integration that caused some raw Redis queries to error unexpectedly
- Added support for exposing claims as part of Oauth payloads in the Oauth Code authorization flows
- Upgrade Google Cloud Secret Manager Go package to
v1.14.2(fixes "certificate_config.json: permission denied" error connecting to GCP secret manager) - Added support for key-pair authentication in Snowflake Plugin
- Add support for machine-to-machine (M2M) authentication for Databricks plugin
- Update
WaitGrouprunnable to blockClosemethod on theWaitGroupcompleting (addressesredis: client is closederrors) - Allow branch name to be given in workflow HTTP requests as a header:
X-Superblocks-Branch - Add
last_updatedfield to theResourceproto, and set last updated time in update signature requests to server - Fixed projection for findOne action in MongoDB integration
- Update signing rotation endpoint for APIs
- 403 status codes from the server now return as 403 instead of 500
- Added Superblocks partner ID to the Databricks integration
- Fix scheduled job execution for signed jobs (when signature verification is enabled)
- Now return Kinesis Plugin Metadata
- Add signing key's corresponding public key and algorithm to the
Signatureproto message - Fixes to Couchbase Plugin
- Add "signature rotation errors" field to
UpdateApiSignatureandUpdateApplicationSignatureproto messages (move existingSignatureintoresultoneof field) - Added
prefixanddelimetersupport to S3 Plugin - Added
moment-timezonepackage to JavaScript worker - Bump superblocksteam/run dep to v0.0.6
- Include signing algorithms with verification keys when registering agent
- Include signing algorithm and public key in response from Sign endpoint (
/v1/signature/sign) - Set errors on responses for all resources that fail to get re-signed during a signature rotation job
- Improved error messages in Email Plugin
- Updated debian packages to address a few vulnerabilities
- Added support for Okta SSO in the Snowflake plugin
- Fix connection string support for RedShift, MySQL, MariaDB, Postgres, CockroachDB
- Added connection string support for RedShift, MySQL, MariaDB, Postgres, CockroachDB
- Fix Snowflake template version
- Fix connection for Snowflake integration so we do not hang for 90 seconds on an invalid configuration
- Added AWS Kinesis plugin
- Fix worker/js helm limits.memory
- Update shutdown ordering so critical processes are not terminated prior to the webserver
- Update dependencies to remove critical vulnerabilities in wget and libexpat1
- Added support for enabling
restapi,restapiintegration,openapi,graphqlandgraphqlintegrationplugins to return more verbose HTTP response data in result (e.g. response status text, status code, etc.) - Added support for configuring whether or not a step using a
restapi,restapiintegrationoropenapiplugin fails if the underlying web request fails - Added support for configuring whether or not a step using a
graphqlorgraphqlintegrationplugin fails if the GraphQL query returns with errors
- Change
v1.security.Resource.config.apitype fromv1.Apitogoogle.protobuf.Valuewell known type
- Added support of action config to test method
- Added ViewMode to API start/end logs
- Added ViewMode to Block start/end logs
- Add comprehensive logger fields to oauth code
- Change: Support signing and verifying APIs at different versions than the agent
- Added support for new Akeyless Secrets Manager
- Set component field for remote logs from worker.go and worker.js
- Update worker request baggage to include additional metadata to be included in remote logs
- e.g.
agent-id,agent-version,application-id, etc.
- e.g.
- Update python worker idle milliseconds metric to be active seconds metric
- Change:
signature.enabledis renamedsignature.verification.enabledto more accurately represent what it does (disable/enable verification only;signature.signing_key_idcontrols signing) - Change: all
signature.keysare sent during agent registration to server regardless of the value ofsignature.verification.enabled(v1.10.2 introduced an awkward state where verification keys were not advertised during registration) - Change: when
signature.signing_key_idis enabled, start watching superblocks server for rotation events - Add: new
signature.batch.sizewhich configures the batch size of resources to claim from server - Add 8 new LLM integrations.
- Support streaming for the REST integration.
- Change: default
examplesigning key and verification keys are removed. - OPAs now skip ratelimiting logic as it's extra network calls for no benefit
- Fix: python file descripter leak resulting in
Too many open files - Couchbase integration now accepts connection strings
- Switch to using W3C trace propagator
- Fix: Include verification key IDs in agent registration request
- Fix: Integrations with Dynamic Workflow Configuration now pass Profile during "Test Connection"
- Change: Bumped Microsoft SQL integration to support URI connection strings
- Switch to using asymmetric keys (ED25519) for resource signing/verification
- OPAs now skip ratelimiting logic as it's extra network calls for no benefit
- ?
- Support
web3module in Javascript steps.
- Breaking Defaults for
events.cloud.enabledset to false, as this was producing large amounts of error logs for EU customers. This flag is only used for signing and signing has not be enabled for EU customers yet.- For customers that have signing enabled, we must ask them to enable
SUPERBLOCKS_ORCHESTRATOR_EVENTS_CLOUD_ENABLED=true
- For customers that have signing enabled, we must ask them to enable
- Fix bug that prevented observability events to be authenticated correctly.
- Ensure redis is shutdown after all executions have been drained.
- Fix bug preventing OpenAPI integrations from honoring delegated binding resolution.
- Auto refresh renewable access tokens for HashiCorp Vault secret integrations.
- Fix the os environment bindings for plugin tests and metadata calls.
- Propagating
X-Superblocks-Authorizationheader when talking to the new Global Edge Network. - Add more descriptive
User-Agentheader when talking to Superblocks. - When an API is cancelled, show "context cancelled" instead of
Internal Errorin the audit logs. - Add
application-idandpage-idto observability logs.
- Fixed plugin ID in OpenAPI integration step execution logs
- Enable the process pool worker
- Fixed issue in the python worker that resulted synchronous executions of steps
- Fixed issue in the python worker where steps would potentially block against concurrently running steps
- Fixed issue in the python worker where setting log level in non-uppercase would crash the worker
- Fixed observability logging of worker.go to propagate to downstream systems
- Added support for the
Elasticsearchintegration - Expose
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIenvironment variable in Python sandbox (for use in Python language steps)
- Release slim OPA
- Fixed missing
deasyncdependency in arm OPA image. Moved to buildingdeasyncfrom source since maintainer does not build the module for all node versions and architectures.
- Deprecated internal gRPC transport and all configuration parameters in favor of adding redis to the all-in-one container
- Fixed memory leak with the v8 plugin
- Fixed hanging apis when running with high parallelism
- Fixed agent panics when running with high parallelism
- Fixed loops timing out when running the REST plugin with basic auth
- Exposed configuration for API timeout
- Enable new integrations for OPA: Confluent, Redpanda, Couchbase, Databricks, Oracle Database
- Reduced baseline memory by 100Mb
- Introduce a shorter version for some of our agent environment variables. For example, you can use
SB_AGENT_KEYinstead of specifying bothSUPERBLOCKS_AGENT_KEYandSUPERBLOCKS_ORCHESTRATOR_SUPERBLOCKS_KEY. - Bump a lot of dependencies.
- Start sending traffic JavaScript code that can be run in V8 to the new Go worker.
-
Added the
EXPOSEdirective to the OPA's Dockerfile so that it can be inspected by vendors like Aptible. -
Introduced support for an RSA JWT to be utilized later.
-
Bump a lot of dependencies.
-
Utilized the new superblocksteam/run project.
-
Fix a few flacky tests.
-
Fix a few graceful shutdown issues.
-
Introduced s6 as our process manager for the container. This will ensure that all processes within the container received the proper signals and are given the opportunity to shut down gracefully.
-
Bump a lot of dependencies.
- Introduced s6 as our process manager for the container. This will ensure that all processes within the container received the proper signals and are given the opportunity to shut down gracefully.
- Bump a lot of dependencies.
- Added
date-fns==3.3.1to the list of JavaScript dependencies
- Fixes an issue where OAuth tokens used in the Authentication Code flow would be too aggressively cached
- Fixes an issue where non-lang plugins could not access the Filepicker
- Log a warning if invalid mode is used in Filepicker
- Separate Kafka Consumer and Producer
- Update multiple Go dependencies
- Pass duration in seconds to quota error
- Use Kafka transactions for 2 and more messages
- Do not default access token's expiration to 1 day if expires_in = 0 or missing in exchange code response
- Fixes an issue with Google Sheets where sheet names dropdown is not loading
- Update multiple Go dependencies.
- Ensure that all operations executed against a v8 isolate occurr in the same go routine it was created in.
- Add gRPC middleware to catch client cancellations to provide a better error message.
- Fixes segfault when logging error detail
- Logs internal error, returned by clients.Check
- Updates orchestrator to parse imports for javascript steps
- Adds support for id_token in OAuth Code flow
- Ensure a step can run for as long as the API has left.
- Add JavaScript polyfile for "console".
- Stops passing the test workflow body values to deployed runs
- Fixes an issue with the observability pipeline where plugin errors and logging were not piped to customer telemetry sinks
- Fixes an issue regarding large nested objects causing Python performance issues
- Allows users to configure size limits in their OPAs, this currently defaults to 30MB. For the OPA these will need to be raised in tandem.
- SUPERBLOCKS_ORCHESTRATOR_GRPC_MSG_REQ_MAX
- SUPERBLOCKS_ORCHESTRATOR_GRPC_MSG_RES_MAX
- Removes the logging of the request values in the orchestrator
- Fixes an issue with the OPA where the healthchecks will return 500 after 30 minutes of the agent being idle
- Fixes an issue with Google Sheets integration metadata call
- Gracefully handle nil pointer dereference when an workflow returns an unexpected nil output
- [SECURITY] Prevents logs from printing out API action configs in the worker logs
- Disables the signing feature in the OPA by default as it's currently still unreleased.
- Fixes issue with subject not being correctly set in emails sent via Email plugin steps
- Adds use of Superblocks-controlled template for emails sent using the Email plugin
- Fixes issues with reading the 2nd file from the Filepicker
- Fixes issues with plugin metadata responses being rejected due to validation error
- Fix panic when a workflow response is null and adds debug logging to surface those issues
- Fixes issue with Python steps being unable to read files due to BlockingIO
- Fixes issue with MongoDB steps failing due to "Unexpected struct type" error
- Adds support for fetching branch-specific API definitions
- Fixes visibility of new REST authentication methods (API tokens forms for integrations like Datadog, CircleCI, etc.)
- Adds support for SMPT integration
- Fixes issue with executing API steps that use OpenAPI integrations
- Introduce ARM image for local testing and deployment
- Addresses python plugin bugs:
- Issue where python plugin is no longer able to use attribute notation to access dictionary keys
- Issue where python was unable to read file contents via the FilePicker component
- Orchestrator based OPA released
- Supports control-flow execution