1.38.0
Changed
- Restrict the Snowflake stage download proxy to known cloud storage endpoints (S3, Azure Blob, GCS) and cap decompressed response bodies at 256 MB
- Enforce
ReadHeaderTimeouton all HTTP-based proxy servers to mitigate slow-client resource exhaustion - Defer listener readiness until the initial control plane event stream catch-up completes, ensuring consistent configuration before accepting traffic
Fixed
- Support WebSocket-based
kubectl port-forwardintroduced in kubectl v1.30+ - Preserve parsed table context when best-effort inventory lookups fail, so policy evaluation still has access to table names and schemas
- Resolve a concurrency issue in listener port lookups that could surface under high connection churn
1.34.2
New
- Support CEL expressions in policy suspension input conditions
- Added rate-limting support for postgres and mysql and refactored s3 rate-limiting
Changed
- Logs are now persisted to disk and retried automatically during Control Plane outages, preventing log loss
- Support multiple policy suspensions for the same policy and identity id
Fixed
- Fixed a bug with the
nullifyredaction option - Fixed a bug where query-rewrite policies didn’t allow adding
LIMIT 0
1.34.0
New
- Smart routing is now available for MySQL resources when using the new proxy implementation
Changed
- Parallelized Rego policy evaluation to improve performance on large numbers of policies
Fixed
- Reduce log noise for timestamp formatting
- Enforce stricter connection timeouts during SSH health checks
1.32.0
New
- Add a new MySQL proxy implementation. This is a fundamentally different and more robust implementation, starting with a minimal feature set that we plan to expand quickly. This feature is behind a feature flag, contact us to enable it for your organization.
- Add MFA policy enforcement across all technologies via the Desktop App
1.31.19
New
- Support optionally sending policy evaluation inputs to the Formal Control Plane based on log configuration settings.
- Support “request” and “response” as evaluation stage names in policies instead of “pre_request” and “post_request”.
- Enable row-level filtering for Snowflake responses.
Changed
- Preserve end-user across BigQuery job lifecycle requests to avoid authentication failures when impersonation is used.
Fixed
- Fix session log entry values for SSM (EC2/ECS) resources.
- Don’t attempt to start the Connector state server if it can’t write on disk.
1.29.9
New
- Add policy input logging for session and request stages with request/session IDs for better traceability
- Add sync of autodiscovered S3 buckets to the connector, with pagination and live updates
Changed
- Standardize request/session ID propagation across connectors, including Snowflake IDs, for consistent logs
- Enforce stricter policy engine capabilities for safer, more predictable evaluations
1.29.8
New
- Add S3 bucket access metrics to policies for rate limiting and blocking
- Add connector, resource, and space IDs to policy input logs for filtering
Changed
- Improve S3 access counting accuracy, include current request and drop daily counts
- Add bucket, path, action, and last modified to S3 policy inputs for finer control
- Provide richer user and query context in post-request policy checks across databases
Fixed
- Fix S3 auth failures to return 403 Forbidden with AWS-style XML
- Fix MySQL auth to forward native error packets to clients
1.29.7
New
- Add structured S3 logs with action, bucket, path, and last-modified, consistent across access styles
Fixed
- Fix S3 PutObject authentication by honoring payload hashes and signing required headers to prevent auth errors
- Fix query aggregation failures for long SQL statements in analytics to improve reliability
1.29.3
New
- Add AI satellite integration, enforcing one link only with data classifier to prevent conflicts
- Add request log evaluation in policy backtests for fuller coverage
- Add MySQL and MariaDB support for hashed tokens, avoiding password length limits
Fixed
- Fix HTTP response handling for non-JSON payloads to prevent misclassification
1.29.0
New
- Add AI satellite integration for HTTP with automatic fallback for compatibility
- Add audit logs for frontend API create, update, delete actions for traceability
Changed
- Enforce required environment variables across environments to prevent misconfigurations
- Include uses row data flag in policies for consistent behavior across services
1.26.2
New
- Add GCP autodiscovery for Compute Engine, GKE, and Cloud SQL to speed setup
Fixed
- Fix errors during data classification when JSON contains empty or null fields
- Fix SSH session logs missing resource details on startup
Changed
- Remove field-level encryption, simplifying setup and avoiding unused complexity
1.25.7
Fixed- Fixed a bug in the TLS certificate renewal process
1.25.6
Changed- Streamlined TLS certificate handling at connector startup
1.25.5
Fixed- Fixed a bug that would prevent connector TLS certificates from being updated on renewal unless the connector is restarted
1.25.4
New- Enabled satellite hostnames linked to a Connector to be configured from the Control Plane and read by the Connector
- Added ‘ConnectorName’ attribute for better tracking and logging during telemetry operations
1.25.3
Changed- Removed a specific MongoDB configuration created for a legacy client, streamlining the process for connecting to DocDB with client-side options
1.25.1
New- Introduced metrics to monitor opened, closed, and currently active connections, enhancing visibility into connection management for performance optimization and troubleshooting
- Implemented new metrics to monitor the number of received Control Plane pings, increasing observability of system interactions
- Fixed some errors with S3 authentication
1.25.0
New- Regularly send connector instance heartbeat as a gauge metric via OpenTelemetry, bolstering real-time monitoring capabilities
- Default to starting up etcd without failing if the etcd cluster doesn’t come up
- Cleaned up configuration and feature flag storage
1.24.12
Changed- Removed unnecessary quotes from table names when parsing SQL queries to make policies easier to write
1.24.11
Changed- Moved classifier-related environment variables into the new
formal_resource_classifier_configurationControl Plane objects
1.24.10
Fixed- Fixed column detection issues with parsing UNION statements with wildcards within Common Table Expressions (CTEs)
1.24.9
Changed- Enhanced logging to include connector ID, improving traceability for debugging and monitoring purposes
1.24.8
Fixed- Resolved connection issues in the MySQL proxy that were caused by handshake problems with MariaDB
1.24.7
New- Enabled automatic connection to the first task’s first container within a specified ECS service when no specific task or container is selected
- Simplified S3 connection establishment
1.24.6
Fixed- Resolved issue with Snowflake private key authentication for enhanced connection security
- Removed unused PII_SAMPLING_RATE ensuring cleaner code base and improved performance
- Included desktop app device trust keys in critical data load process for strengthened data security
1.24.5
Fixed- Improved robustness of desktop app device trust keys
1.24.4
Changed- Improved logging around device trust signature verification errors
1.24.3
New- Added stateless authentication support for Clickhouse
- Fixed the parsing of device info to ensure accurate timestamping in UTC
1.24.2
Changed- Reduced wait time for PROXY protocol headers from 10 seconds to 200 milliseconds, enhancing performance and speeding up the handling of new connections
- Fixed MySQL column detection and data label matching for policies
1.24.1
New- Implemented stateless authentication for Snowflake
1.24.0
New- Introduced stateless JWT authentication for Kubernetes, PostgreSQL, HTTP, and SSH, enhancing security and streamlining user verification process
1.23.6
Fixed- Improved reliability for MySQL resources
1.23.2
Changed- Enhanced MySQL error messages for better readability during the handshake process
1.23.1
New- Added support for hashed token authentication for Postgres proxy, providing a new option for users facing length restrictions on database passwords
1.23.0
New- Added support for SSH private key authentication to upstream, enhancing secure connection options
- Updated MySQL to utilize our unified SQL semantic analyzer, ensuring consistent behavior across databases
- Enabled port fields in resources to be updated for more flexible configurations
1.22.2
New- Introduced a readiness endpoint for the connector (on health check port 8080
/ready), allowing it to signify when all listeners are initialized and ready to receive traffic
- Achieved consistency in logging and assertion libraries across the system, improving reliability of error logging
1.22.1
New- Added support for handling Snowflake positional reference syntax in SQL queries
- Introduced capability to resolve Snowflake positional arguments based on actual column names from inventory
- Extended support for LATERAL queries, enabling more complex SQL queries that depend on preceding tables’ columns
- Resolved possible crash when retrieving outbound IP in telemetry, improving stability
- Streamlined MySQL TLS environment variables into a centralized TLS config
- Dropped ability of the connector to exit if a health check fails, boosting connector resilience
1.22.0
New- Refactored log encryption configuration and improved encryption of exec streams (SSH, SSM, Kubernetes)
- Removed the ability to configure log encryption and encryption keys via environment variables; such configuration will need to be done via the Formal console or Terraform provider