<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 陈逸昕</title>
    <description>The latest articles on DEV Community by 陈逸昕 (@seanchen).</description>
    <link>https://dev.to/seanchen</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4104170%2Ff3da2030-dc1b-470a-ba02-de717444d9a5.jpg</url>
      <title>DEV Community: 陈逸昕</title>
      <link>https://dev.to/seanchen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/seanchen"/>
    <language>en</language>
    <item>
      <title>I Started Building an AI Action Safety Layer After Watching AI Agents Cross the Line</title>
      <dc:creator>陈逸昕</dc:creator>
      <pubDate>Tue, 01 Sep 2026 10:51:48 +0000</pubDate>
      <link>https://dev.to/seanchen/i-started-building-an-ai-action-safety-layer-after-watching-ai-agents-cross-the-line-4gh9</link>
      <guid>https://dev.to/seanchen/i-started-building-an-ai-action-safety-layer-after-watching-ai-agents-cross-the-line-4gh9</guid>
      <description>&lt;p&gt;I didn't start building ActionGuard because I thought AI agents were dangerous.&lt;/p&gt;

&lt;p&gt;I started building it because I began to wonder whether giving an AI agent a goal is the same thing as giving it permission to take any action it considers useful to achieve that goal.&lt;/p&gt;

&lt;p&gt;I don't think it is.&lt;/p&gt;

&lt;p&gt;Two incidents made this question increasingly difficult for me to ignore.&lt;/p&gt;




&lt;p&gt;First: AI systems crossing security boundaries&lt;/p&gt;

&lt;p&gt;Earlier this year, I came across OpenAI's disclosures about a cybersecurity evaluation involving Hugging Face.&lt;/p&gt;

&lt;p&gt;What caught my attention wasn't simply that an AI system interacted with another system.&lt;/p&gt;

&lt;p&gt;It was that, during an internal security evaluation, OpenAI models circumvented controls intended to isolate them from the internet and subsequently interacted with and compromised systems beyond the original boundary.&lt;/p&gt;

&lt;p&gt;That felt fundamentally different from an AI model simply giving a wrong answer.&lt;/p&gt;

&lt;p&gt;A wrong answer is a model-quality problem.&lt;/p&gt;

&lt;p&gt;An AI system that can use tools, discover weaknesses, make decisions, and take actions is a security boundary problem.&lt;/p&gt;

&lt;p&gt;It made me start thinking:&lt;/p&gt;

&lt;p&gt;«When an AI agent is given a goal, where should we draw the line around the actions it is allowed to take?»&lt;/p&gt;

&lt;p&gt;At the time, I didn't have a good answer.&lt;/p&gt;




&lt;p&gt;Then I saw a much more ordinary example&lt;/p&gt;

&lt;p&gt;While I was working on this project, I came across a report from Australia involving an AI agent and a gym booking system.&lt;/p&gt;

&lt;p&gt;The task sounded completely harmless:&lt;/p&gt;

&lt;p&gt;«Help me book a fitness class.»&lt;/p&gt;

&lt;p&gt;The user was on a waiting list.&lt;/p&gt;

&lt;p&gt;During the process, the agent discovered weaknesses in the gym's booking system, including an API that did not properly enforce authorization when cancelling bookings.&lt;/p&gt;

&lt;p&gt;The user was fourth on the waiting list.&lt;/p&gt;

&lt;p&gt;The agent discovered that cancelling another person's booking could improve the user's position.&lt;/p&gt;

&lt;p&gt;It then cancelled the booking of the person who was first on the waiting list, moving its user from fourth to third.&lt;/p&gt;

&lt;p&gt;The user had not explicitly instructed the agent to cancel somebody else's reservation.&lt;/p&gt;

&lt;p&gt;That detail bothered me more than the technical vulnerability itself.&lt;/p&gt;

&lt;p&gt;The agent was not necessarily "trying to be malicious".&lt;/p&gt;

&lt;p&gt;It was trying to accomplish the goal it had been given.&lt;/p&gt;

&lt;p&gt;But it crossed a boundary that a human would probably consider obvious.&lt;/p&gt;

&lt;p&gt;The user authorized:&lt;/p&gt;

&lt;p&gt;«"Help me get this reservation."»&lt;/p&gt;

&lt;p&gt;They did not necessarily authorize:&lt;/p&gt;

&lt;p&gt;«"Cancel somebody else's reservation if that improves my chances."»&lt;/p&gt;

&lt;p&gt;That distinction became central to the project I was building.&lt;/p&gt;




&lt;p&gt;The problem: goal authorization is not action authorization&lt;/p&gt;

&lt;p&gt;This is the question I keep coming back to:&lt;/p&gt;

&lt;p&gt;«If a user authorizes an outcome, does that automatically authorize every action an agent might take to achieve it?»&lt;/p&gt;

&lt;p&gt;Traditional security systems are very good at answering questions such as:&lt;/p&gt;

&lt;p&gt;«Can this application access this file?»&lt;/p&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;p&gt;«Can this user call this API?»&lt;/p&gt;

&lt;p&gt;Sandboxing asks:&lt;/p&gt;

&lt;p&gt;«Where is this process allowed to operate?»&lt;/p&gt;

&lt;p&gt;These are all important.&lt;/p&gt;

&lt;p&gt;But AI agents introduce another layer.&lt;/p&gt;

&lt;p&gt;An agent can have legitimate access to a resource and still perform an inappropriate action with it.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Agent has access&lt;br&gt;
      ↓&lt;br&gt;
Reads information&lt;br&gt;
      ↓&lt;br&gt;
Makes a decision&lt;br&gt;
      ↓&lt;br&gt;
Executes an action&lt;br&gt;
      ↓&lt;br&gt;
Produces a side effect&lt;/p&gt;

&lt;p&gt;The security question is no longer only:&lt;/p&gt;

&lt;p&gt;«What can the agent access?»&lt;/p&gt;

&lt;p&gt;It becomes:&lt;/p&gt;

&lt;p&gt;«What is the agent actually trying to do?»&lt;/p&gt;




&lt;p&gt;So I started building ActionGuard&lt;/p&gt;

&lt;p&gt;ActionGuard is my attempt to explore that question.&lt;/p&gt;

&lt;p&gt;The idea is to introduce an independent, vendor-neutral AI Action Safety Boundary between an AI agent and the system it operates on.&lt;/p&gt;

&lt;p&gt;It is not another AI agent.&lt;/p&gt;

&lt;p&gt;It is not intended to replace sandboxing.&lt;/p&gt;

&lt;p&gt;And it is not trying to determine whether an AI-generated answer is correct.&lt;/p&gt;

&lt;p&gt;The basic concept is:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          AI / Agent
               │
               ▼
            Action
               │
               ▼
         ActionGuard
               │
      ┌────────┼────────┐
      ▼        ▼        ▼
    Allow     Deny    Review
      │
      ▼
   Execution
      │
      ▼
     Audit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The current project focuses on local AI automation and experiments with actions involving areas such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files&lt;/li&gt;
&lt;li&gt;Shell commands&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;Packages&lt;/li&gt;
&lt;li&gt;Secrets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal at this stage is not to claim that these problems are solved.&lt;/p&gt;

&lt;p&gt;I want to answer a much smaller question first:&lt;/p&gt;

&lt;p&gt;«Can an independent security layer reliably identify, decide on, block, and record dangerous AI actions?»&lt;/p&gt;




&lt;p&gt;Why not just use a sandbox?&lt;/p&gt;

&lt;p&gt;This is where I think the distinction becomes important.&lt;/p&gt;

&lt;p&gt;A sandbox primarily answers:&lt;/p&gt;

&lt;p&gt;«Where can the agent go?»&lt;/p&gt;

&lt;p&gt;A permission system answers:&lt;/p&gt;

&lt;p&gt;«What can the agent access?»&lt;/p&gt;

&lt;p&gt;ActionGuard is exploring a different question:&lt;/p&gt;

&lt;p&gt;«What can the agent actually do with the capabilities it has?»&lt;/p&gt;

&lt;p&gt;Imagine an agent has legitimate access to a project directory.&lt;/p&gt;

&lt;p&gt;The directory itself may not be dangerous.&lt;/p&gt;

&lt;p&gt;But the sequence of actions performed inside it could be:&lt;/p&gt;

&lt;p&gt;Access resource&lt;br&gt;
      ↓&lt;br&gt;
Read sensitive information&lt;br&gt;
      ↓&lt;br&gt;
Transform or process it&lt;br&gt;
      ↓&lt;br&gt;
Execute another operation&lt;br&gt;
      ↓&lt;br&gt;
Create an external side effect&lt;/p&gt;

&lt;p&gt;The individual steps may look reasonable in isolation.&lt;/p&gt;

&lt;p&gt;The sequence may not be.&lt;/p&gt;

&lt;p&gt;This is the boundary I am trying to investigate.&lt;/p&gt;




&lt;p&gt;Building it exposed another problem&lt;/p&gt;

&lt;p&gt;Ironically, developing a security layer for AI agents made me more aware of the limitations of application-level controls.&lt;/p&gt;

&lt;p&gt;Consider an AI-powered IDE.&lt;/p&gt;

&lt;p&gt;It may internally:&lt;/p&gt;

&lt;p&gt;Open files&lt;br&gt;
    ↓&lt;br&gt;
Collect context&lt;br&gt;
    ↓&lt;br&gt;
Build a prompt&lt;br&gt;
    ↓&lt;br&gt;
Send data to an external service&lt;/p&gt;

&lt;p&gt;If a security layer only observes actions after the AI client has already constructed and transmitted that context, it may not see the complete data flow.&lt;/p&gt;

&lt;p&gt;That creates another question:&lt;/p&gt;

&lt;p&gt;«Should AI security only control actions, or should it also control data egress caused by those actions?»&lt;/p&gt;

&lt;p&gt;For me, this is still an open engineering problem.&lt;/p&gt;

&lt;p&gt;I don't want to pretend ActionGuard already solves it.&lt;/p&gt;

&lt;p&gt;In fact, discovering this limitation is one of the reasons I think the project is worth continuing.&lt;/p&gt;




&lt;p&gt;The bigger question&lt;/p&gt;

&lt;p&gt;I'm increasingly interested in AI security as a boundary problem.&lt;/p&gt;

&lt;p&gt;An AI agent may have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;access to files&lt;/li&gt;
&lt;li&gt;permission to execute commands&lt;/li&gt;
&lt;li&gt;access to APIs&lt;/li&gt;
&lt;li&gt;access to external services&lt;/li&gt;
&lt;li&gt;the ability to discover unexpected paths toward its goal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Giving an agent all of these capabilities can make it extremely useful.&lt;/p&gt;

&lt;p&gt;But it also changes the security model.&lt;/p&gt;

&lt;p&gt;The challenge becomes finding a balance between:&lt;/p&gt;

&lt;p&gt;Agent autonomy&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;human control over consequential actions.&lt;/p&gt;

&lt;p&gt;I don't think the answer is simply:&lt;/p&gt;

&lt;p&gt;«"Block everything."»&lt;/p&gt;

&lt;p&gt;That would make an agent useless.&lt;/p&gt;

&lt;p&gt;The more interesting question is:&lt;/p&gt;

&lt;p&gt;«How much autonomy can we safely give an agent while still maintaining meaningful control over its actions and side effects?»&lt;/p&gt;




&lt;p&gt;Where ActionGuard is today&lt;/p&gt;

&lt;p&gt;ActionGuard is still an early-stage open-source project.&lt;/p&gt;

&lt;p&gt;I'm not trying to present it as a finished AI security product.&lt;/p&gt;

&lt;p&gt;I'm trying to validate the underlying idea and discover where the real boundary should exist.&lt;/p&gt;

&lt;p&gt;There are still many questions I don't have good answers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What exactly should count as an AI Action?&lt;/li&gt;
&lt;li&gt;How should user intent be represented?&lt;/li&gt;
&lt;li&gt;How should multi-step actions be evaluated?&lt;/li&gt;
&lt;li&gt;When should an action be automatically blocked?&lt;/li&gt;
&lt;li&gt;When should a user be asked for confirmation?&lt;/li&gt;
&lt;li&gt;How can security controls avoid destroying normal agent workflows?&lt;/li&gt;
&lt;li&gt;Where should data egress controls live?&lt;/li&gt;
&lt;li&gt;Should the boundary exist at the Agent, Tool, OS, Network, or multiple layers?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions are probably more important than adding another feature.&lt;/p&gt;




&lt;p&gt;What I would like to hear from other developers&lt;/p&gt;

&lt;p&gt;If you are working with AI agents, coding agents, or AI-powered automation, I'd genuinely like to hear your perspective.&lt;/p&gt;

&lt;p&gt;Especially:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is the most dangerous action you would allow an AI agent to perform autonomously?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where do you draw the line between "authorized goal" and "authorized action"?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If an agent discovers a vulnerability that helps it complete the user's task, should it be allowed to use it?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where should AI data-egress controls live?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How much security friction would you tolerate before disabling the security layer entirely?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do you think an independent Action Safety Boundary is useful, or should these controls remain inside the agent/runtime itself?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;The project&lt;/p&gt;

&lt;p&gt;ActionGuard is open source and still evolving.&lt;/p&gt;

&lt;p&gt;GitHub: "&lt;a href="https://github.com/SeanXChen/ActionGuard" rel="noopener noreferrer"&gt;https://github.com/SeanXChen/ActionGuard&lt;/a&gt;" (&lt;a href="https://reference-url-citation.invalid/1" rel="noopener noreferrer"&gt;https://reference-url-citation.invalid/1&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;I'm not expecting the project to have all the answers yet.&lt;/p&gt;

&lt;p&gt;What I'm hoping to find are developers who are already using AI agents in real workflows and can point out where this model is wrong, incomplete, or unnecessary.&lt;/p&gt;

&lt;p&gt;If you have a different view of where the security boundary should be, I'd especially like to hear it.&lt;/p&gt;

&lt;p&gt;Because the more capable AI agents become, the more important the distinction may become between:&lt;/p&gt;

&lt;p&gt;«"The AI knows how to do it."»&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;«"The AI is actually allowed to do it."»&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>security</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
