<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on Formal - Network security for the agentic era</title><link>https://www.formal.ai/blog/</link><description>Recent content in Blog on Formal - Network security for the agentic era</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 23 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.formal.ai/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Giving Cloud Agents Production Access with OIDC, Not Secrets</title><link>https://www.formal.ai/blog/cloud-agents-oidc-infrastructure/</link><pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/cloud-agents-oidc-infrastructure/</guid><description>&lt;p&gt;At Formal, &lt;a href="https://www.linkedin.com/posts/ahmb84_today-is-a-very-sad-day-at-formal-we-activity-7424478029755760640-SSBL/"&gt;we hate secrets&lt;/a&gt;. Since day one, we&amp;rsquo;ve been on a quest to drive the number of long-lived secrets in our infrastructure to zero.&lt;/p&gt;
&lt;p&gt;We want our product and the way our customers interact with it to reflect that philosophy, too. Accordingly, we built OIDC Integrations a few months ago: a way for arbitrary machine workloads to authenticate to Formal on the strength of their own infrastructure identity, and optionally attest a human identity along the way.&lt;/p&gt;</description></item><item><title>PSA: fork() considered harmful in macOS</title><link>https://www.formal.ai/blog/dont-use-fork-macos/</link><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/dont-use-fork-macos/</guid><description>&lt;p&gt;At Formal, we love proxies, and we&amp;rsquo;ve been spending a lot of time writing proxies that don&amp;rsquo;t just run in containers but also on endpoints. As a result, our Go code has been running more and more on macOS lately. It also has been growing more and more Swift CGo bindings!&lt;/p&gt;
&lt;p&gt;Upon upgrading to macOS Tahoe 26.5.2, however, some customers were experiencing some bizarre high CPU usage from our endpoint. We grabbed the following profile via &lt;code&gt;sample&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>The Metabase Zero Day and the Case for Enhanced Data-Layer Security</title><link>https://www.formal.ai/blog/metabase-zero-day-data-access/</link><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/metabase-zero-day-data-access/</guid><description>&lt;p&gt;At Formal, when we meet with security engineers and CISOs to listen to their use cases and introduce our product, they &lt;em&gt;always&lt;/em&gt; challenge us to frame our conversation in a way that makes their lives better and/or easier.&lt;/p&gt;
&lt;p&gt;Yes, security absolutely cares about keeping up with fast-moving vendors and the rapidly improving tech stack. They love the opportunity to learn how they could be tackling the same problems more efficiently. But, they’re also grounded by the real-world risks they carry, ones they must knock out as quickly as possible before the clock runs out.&lt;/p&gt;</description></item><item><title>Announcing Connector v2.0.0</title><link>https://www.formal.ai/blog/connector-v2/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/connector-v2/</guid><description>&lt;p&gt;Today, we’re releasing version 2.0.0 of the Formal Connector, which significantly overhauls the way the Connector synchronizes data with the control plane. Our new system substantially improves data efficiency and reliability. We’ve been testing it with several customers over the past few months, and we’re excited to make it generally available today.&lt;/p&gt;
&lt;h2 id="change-synchronization-more-efficiently"&gt;Change synchronization, more efficiently&lt;/h2&gt;
&lt;p&gt;The v1 Connector relied on a long-lived outbound gRPC connection, through which the control plane pushed configuration and policy changes in real time. Because network disruptions often caused the Connector to miss these pushed events, we had to add a frequent polling mechanism that dramatically increased database load and wasted bandwidth.&lt;/p&gt;</description></item><item><title>Security Debt We Never Created</title><link>https://www.formal.ai/blog/security-debt-we-never-created/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/security-debt-we-never-created/</guid><description>&lt;p&gt;Formal is critical-path software. In order to guard access to our customers’ most sensitive data and compute resources, the Formal Connector sits in a privileged network position in customer VPCs with connectivity and authentication to that infrastructure. Because of this setup, we take this responsibility incredibly seriously and invest significantly in reliability and security to ensure the availability of customer access and confidentiality of customer data.&lt;/p&gt;
&lt;p&gt;As an early-stage startup, however, these efforts don’t require a large security team in order to provide full security coverage. Rather, we’ve kept the architecture straightforward, avoiding overcomplexity and obfuscation.&lt;/p&gt;</description></item><item><title>Stop Building Scaffolding: Who Cares About MCP vs CLI</title><link>https://www.formal.ai/blog/stop-building-scaffolding-mcp-vs-cli/</link><pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/stop-building-scaffolding-mcp-vs-cli/</guid><description>&lt;p&gt;The bitter lesson of AI infrastructure over the past three years is simple: any scaffolding built to compensate for model limitations is invariably destined to become obsolete. Not because the scaffolding was badly built. But because the models got smarter.&lt;/p&gt;
&lt;p&gt;The debate about whether AI agents should use MCP or CLIs is the latest instance of this pattern, and it&amp;rsquo;s missing the point entirely. Both sides are arguing about scaffolding.&lt;/p&gt;</description></item><item><title>Editing Code Visually Without Sacrificing Fidelity</title><link>https://www.formal.ai/blog/editing-code-visually/</link><pubDate>Thu, 29 Jan 2026 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/editing-code-visually/</guid><description>&lt;h2 id="the-challenge"&gt;The Challenge&lt;/h2&gt;
&lt;p&gt;At Formal, we&amp;rsquo;ve chosen to build powerful primitives first. The downside is that powerful primitives are often harder to use. Think about coding in Rust versus JavaScript – more control means more responsibility. That&amp;rsquo;s why we&amp;rsquo;re also investing heavily in powerful abstractions that solve the UX problem.&lt;/p&gt;
&lt;p&gt;We built the Formal Connector on top of OPA (Open Policy Agent). Compared to other products that invent bespoke JSON or YAML schemas for allow/deny rules, this is a much more powerful approach.&lt;/p&gt;</description></item><item><title>Using Proxies to Hide Secrets from Claude Code</title><link>https://www.formal.ai/blog/using-proxies-claude-code/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/using-proxies-claude-code/</guid><description>&lt;h2 id="sandboxing-agentic-coding-tools-is-a-networking-problem"&gt;Sandboxing agentic coding tools is a networking problem&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.formal.ai/blog/allowlisting-some-bash-commands-is-often-the-same-as-allowlisting-all-with-claude-code/"&gt;Allowlisting commands on a trusted host for an agentic coding tool can be somewhat fraught&lt;/a&gt;. Taking inspiration from &lt;a href="https://simonwillison.net/2025/Oct/22/living-dangerously-with-claude/#living-dangerously-with-claude.014.jpeg"&gt;Simon Willison&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.formal.ai/blog/images/2026-01-image.png" alt="" loading="lazy" style="max-width: 100%; margin: 24px 0; border: 1px solid #d4d4de; border-radius: 6px;" /&gt;
&lt;/p&gt;
&lt;p&gt;Sandboxes help us reason about their relation to the lethal trifecta:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.formal.ai/blog/images/2026-01-image-1.png" alt="" loading="lazy" style="max-width: 100%; margin: 24px 0; border: 1px solid #d4d4de; border-radius: 6px;" /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What untrusted content is the sandbox exposed to?&lt;/li&gt;
&lt;li&gt;How can they externally communicate?&lt;/li&gt;
&lt;li&gt;What sensitive data are we providing to the sandbox?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anthropic provides several sandboxing tools specific to Claude Code:&lt;/p&gt;</description></item><item><title>Introducing Fine Grained Control for Connector Logs</title><link>https://www.formal.ai/blog/fine-grained-connector-logs/</link><pubDate>Wed, 17 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/fine-grained-connector-logs/</guid><description>&lt;h2 id="how-does-the-formal-connector-work"&gt;&lt;strong&gt;How does the Formal Connector work?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The Formal Connector is a protocol-aware reverse proxy that sits between identities (AI agents, users, and machines) and sensitive systems such as databases, SSH, Kubernetes clusters, and APIs. As requests flow through this Connector, teams gain visibility on requests and sessions to then enforce security policies such as blocking, masking, hashing, and more.&lt;/p&gt;
&lt;h2 id="what-data-does-the-formal-connector-log"&gt;&lt;strong&gt;What data does the Formal Connector log?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The Formal Connector can see the traffic that passes through such as SQL queries, HTTP requests and responses, and stream events.&lt;/p&gt;</description></item><item><title>Allowlisting Some Bash Commands is Often the Same as Allowlisting All with Claude Code</title><link>https://www.formal.ai/blog/allowlisting-bash-commands/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/allowlisting-bash-commands/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;At Formal , we are heavy users of agentic coding tools for software development, and we&amp;rsquo;re trying to continue performing local development with these tools on our (admittedly beefy) laptops for as long as possible. One example is Claude Code. These tools feel particularly magical when &lt;a href="https://www.ycombinator.com/library/MW-andrej-karpathy-software-is-changing-again"&gt;verification loops are as fast as possible&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Having to explicitly approve every file edit Claude Code makes is time intensive — and so is having to explicitly approve every command Claude Code wants to run to get feedback on that code change before we review it ourselves. Some examples include running &lt;code&gt;go build&lt;/code&gt;, &lt;code&gt;go test&lt;/code&gt;, restarting a &lt;code&gt;docker&lt;/code&gt; container, and running our linter!&lt;/p&gt;</description></item><item><title>From Security Problem to Security Solution</title><link>https://www.formal.ai/blog/security-problem-to-solution/</link><pubDate>Thu, 30 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/security-problem-to-solution/</guid><description>&lt;p&gt;We built what our customers needed: a security-first PHI protection system that could deploy on-premise and provide defense in depth. We deployed it and it integrated into their environment seamlessly. Then some interesting happened – other healthcare companies started asking about it.&lt;/p&gt;
&lt;h2 id="why-healthcare-data-protection-needs-a-security-mindset"&gt;Why Healthcare Data Protection Needs a Security Mindset&lt;/h2&gt;
&lt;p&gt;At our core, we&amp;rsquo;re a security company. We think about threats, least privilege, and defense in depth. So when our customers came to us asking for PHI redaction and classification, we did what security companies do: we researched the threat landscape.&lt;/p&gt;</description></item><item><title>Formal Named Cloud Security Segment Leader in Latio Market Report</title><link>https://www.formal.ai/blog/latio-market-report/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/latio-market-report/</guid><description>&lt;h2 id="the-shift-within-cloud-security-and-privileged-access-management"&gt;The Shift within Cloud Security and Privileged Access Management&lt;/h2&gt;
&lt;p&gt;Cloud Security is undergoing the most significant transformation since the rise of CNAPP. As infrastructure, data, and AI systems converge, the traditional separation between Cloud Security and Privileged Access Management (PAM) is disappearing.&lt;/p&gt;
&lt;p&gt;What used to be distinct layers – runtime protection, posture management, identity access – are now merging into a single continuum of visibility and enforcement.&lt;/p&gt;
&lt;p&gt;The 2025 Latio Cloud Security Report captures this moment clearly: organizations no longer want multiple, disjointed tools for cloud visibility, access, and enforcement. Instead, they&amp;rsquo;re moving toward unified access control and data-flow governance, where the same platform can both monitor and mediate how sensitive workloads are touched – by humans, systems, or AI agents.&lt;/p&gt;</description></item><item><title>The Permission Pitfall: Securing MCP Servers Without Limiting Value</title><link>https://www.formal.ai/blog/permission-pitfall-mcp/</link><pubDate>Tue, 03 Jun 2025 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/permission-pitfall-mcp/</guid><description>&lt;p&gt;Back in November, Anthropic introduced the &lt;a href="https://www.anthropic.com/news/model-context-protocol"&gt;Model Context Protocol&lt;/a&gt; (MCP), as the new (and now) standard way for connecting AI assistants to data sources and tools. The goal was to give LLM models the data context it needs to be effective at scale.&lt;/p&gt;
&lt;p&gt;MCP has described as the &amp;ldquo;&lt;a href="https://medium.com/data-science-collective/mcp-is-a-security-nightmare-heres-how-the-agent-security-framework-fixes-it-fd419fdfaf4e"&gt;USB-C of AI agents&lt;/a&gt;&amp;rdquo; connecting AI agents to data and tools through a common interface. Instead of one-off integrations, MCP provides a consistent communication pattern, paving the way for flexible tool use and smarter systems.&lt;/p&gt;</description></item><item><title>Down the Rabbit Hole: Implementing SSH Port Forwarding over AWS Session Manager</title><link>https://www.formal.ai/blog/ssh-port-forwarding-ssm/</link><pubDate>Fri, 07 Feb 2025 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/ssh-port-forwarding-ssm/</guid><description>&lt;p&gt;I&amp;rsquo;m Formal&amp;rsquo;s newest hire. I &lt;a href="https://www.linkedin.com/posts/saligrama_im-excited-to-share-that-i-graduated-from-activity-7287906878536253440-qs-D?utm_source=social_share_send&amp;amp;utm_medium=member_desktop_web&amp;amp;rcm=ACoAACXWLtsBnuUyaYdCrwWUDDYLcKevuxUXQMA"&gt;graduated&lt;/a&gt; from Stanford two months ago, and my first day on the job was Monday, January 20. After a fast onboarding setting up my work laptop and phone, I was quickly added to our customer-shared channels.&lt;/p&gt;
&lt;p&gt;That day, one of our customers paged us asking for help with an issue they were having. Two of the many protocols that the Formal Connector supports include SSH and AWS Session Manager (SSM), which our customer heavily relies on for engineering access to compute resources. This had been working well for them, but they had recently encountered some issues in trying to set up &lt;a href="https://code.visualstudio.com/docs/remote/ssh"&gt;Remote SSH development&lt;/a&gt; via Visual Studio Code, in order to run machine learning workflows on a remote dev box with a GPU. This seemed like an odd bug, and so my first Formal task ended up being to investigate and fix the issue.&lt;/p&gt;</description></item><item><title>Building a Protocol-Aware Reverse Proxy: Lessons from Handling MongoDB's Unique Framing</title><link>https://www.formal.ai/blog/mongodb-protocol-proxy/</link><pubDate>Fri, 03 Jan 2025 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/mongodb-protocol-proxy/</guid><description>&lt;p&gt;The &lt;strong&gt;Formal&lt;/strong&gt; Connector is a protocol-aware reverse proxy that interprets various wire-protocols (HTTP, Postgres, MySQL, Kubernetes, and much more) to provide security teams better visibility and control of their data flows.&lt;/p&gt;
&lt;p&gt;Customers often start using Formal for one type of data store and then over time Formal covers more data stores in their stack. To keep the Formal deployment simple we built a feature that enables the Formal Connector to listen on a single port for multiple technologies. This feature works by detecting the incoming wire-protocol and then automatically loading the right wire-protocol interpreter.&lt;/p&gt;</description></item><item><title>Formal Comes Out of Stealth with $6.8M in Funding to Secure the Modern Data Stack</title><link>https://www.formal.ai/blog/formal-out-of-stealth/</link><pubDate>Tue, 19 Nov 2024 00:00:00 +0000</pubDate><guid>https://www.formal.ai/blog/formal-out-of-stealth/</guid><description>&lt;p&gt;We&amp;rsquo;re excited to announce our seed funding round led by Thrive Capital with participation from Y Combinator, the founders of Datadog, Clickhouse, including C-level executives from Rippling, Plaid, Vanta and more.&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t just a financial milestone. It&amp;rsquo;s a recognition of visionary customers like &lt;a href="https://gusto.com"&gt;Gusto&lt;/a&gt;, &lt;a href="https://notion.com"&gt;Notion&lt;/a&gt; and &lt;a href="https://ramp.com"&gt;Ramp&lt;/a&gt; who trust Formal to protect their most sensitive data and a bet on every customer who will trust us in the future.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;In a world where success is increasingly defined by one&amp;rsquo;s ability to safely leverage insights and AI, Formal is the leader to help enterprises secure and take action on their data. Formal has the right combination of talent, momentum, and technical insights required to solve this very difficult problem and help reimagine how every business can build incredible products safely on top of their most sensitive information.&amp;rdquo;&lt;/p&gt;</description></item></channel></rss>