<?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: Eray Özer</title>
    <description>The latest articles on DEV Community by Eray Özer (@ozereray).</description>
    <link>https://dev.to/ozereray</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%2F3859642%2F28ea0ece-e931-4556-ade8-065a2c177deb.jpg</url>
      <title>DEV Community: Eray Özer</title>
      <link>https://dev.to/ozereray</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ozereray"/>
    <language>en</language>
    <item>
      <title>When Should an AI Agent Ask a Human?</title>
      <dc:creator>Eray Özer</dc:creator>
      <pubDate>Thu, 17 Sep 2026 10:56:47 +0000</pubDate>
      <link>https://dev.to/ozereray/when-should-an-ai-agent-ask-a-human-2kig</link>
      <guid>https://dev.to/ozereray/when-should-an-ai-agent-ask-a-human-2kig</guid>
      <description>&lt;h1&gt;
  
  
  When Should an AI Agent Ask a Human?
&lt;/h1&gt;

&lt;p&gt;AI agents are no longer just generating text.&lt;/p&gt;

&lt;p&gt;They can call APIs, use tools, access databases, and trigger real actions.&lt;/p&gt;

&lt;p&gt;That creates a simple security question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What should happen when an agent wants to do something risky?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Blocking everything is not always the right answer.&lt;/p&gt;

&lt;p&gt;Allowing everything is definitely not the right answer.&lt;/p&gt;

&lt;p&gt;This is one of the problems we are solving with &lt;strong&gt;Aegisora 3.0&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Runtime Decisions
&lt;/h2&gt;

&lt;p&gt;Aegisora evaluates an agent action &lt;strong&gt;before execution&lt;/strong&gt; and can make three decisions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALLOW
BLOCK
ESCALATE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ALLOW
&lt;/h3&gt;

&lt;p&gt;The action satisfies the runtime policy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI Agent
   ↓
Aegisora
   ↓
Execute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  BLOCK
&lt;/h3&gt;

&lt;p&gt;The action violates a security policy or runtime rule.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI Agent
   ↓
Aegisora
   ↓
STOP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ESCALATE
&lt;/h3&gt;

&lt;p&gt;The action is risky or ambiguous.&lt;/p&gt;

&lt;p&gt;Instead of automatically allowing or rejecting it, Aegisora pauses the action and sends it for human review.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI Agent
   ↓
Action
   ↓
Aegisora
   ↓
ESCALATE
   ↓
Human Review
   ↓
APPROVE / REJECT / EXPIRE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is &lt;strong&gt;when&lt;/strong&gt; this happens.&lt;/p&gt;

&lt;p&gt;The action is stopped &lt;strong&gt;before it reaches the external system&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does a Third State Matter?
&lt;/h2&gt;

&lt;p&gt;Imagine an AI agent wants to make a production change.&lt;/p&gt;

&lt;p&gt;The action might be legitimate.&lt;/p&gt;

&lt;p&gt;It might be dangerous.&lt;/p&gt;

&lt;p&gt;Or the runtime might simply not have enough context to make a confident decision.&lt;/p&gt;

&lt;p&gt;A binary system has only two choices:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALLOW
   or
BLOCK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A runtime governance layer can introduce a third:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ESCALATE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pause the action.&lt;/p&gt;

&lt;p&gt;Get human authorization.&lt;/p&gt;

&lt;p&gt;Then continue or reject it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bounded Autonomy
&lt;/h2&gt;

&lt;p&gt;The goal isn't to remove autonomy from AI agents.&lt;/p&gt;

&lt;p&gt;The goal is to make that autonomy &lt;strong&gt;bounded&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Low-risk action
      ↓
    ALLOW
      ↓
   Execute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Clear violation
      ↓
    BLOCK
      ↓
     Stop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Risky / ambiguous action
          ↓
       ESCALATE
          ↓
    Human decision
          ↓
   APPROVE / REJECT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a controlled boundary between &lt;strong&gt;autonomous decision-making&lt;/strong&gt; and &lt;strong&gt;real-world execution&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aegisora 3.0
&lt;/h2&gt;

&lt;p&gt;Human escalation is part of a broader runtime security model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request
   ↓
Context
   ↓
Risk
   ↓
Policy
   ↓
Decision
   ↓
Enforcement
   ↓
Execution
   ↓
Evidence
   ↓
Audit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don't just secure the model. Secure what the agent is allowed to do.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Aegisora is open source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/aegisora-ai/aegisora" rel="noopener noreferrer"&gt;https://github.com/aegisora-ai/aegisora&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.aegisora.org/" rel="noopener noreferrer"&gt;https://www.aegisora.org/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  One Question for AI Builders
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Which actions should an AI agent never perform without human approval?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear how other teams are handling this today.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>opensource</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Aegisora 2.0: A Runtime Security Layer for Autonomous AI Agents</title>
      <dc:creator>Eray Özer</dc:creator>
      <pubDate>Wed, 02 Sep 2026 10:05:27 +0000</pubDate>
      <link>https://dev.to/ozereray/aegisora-20-a-runtime-security-layer-for-autonomous-ai-agents-1687</link>
      <guid>https://dev.to/ozereray/aegisora-20-a-runtime-security-layer-for-autonomous-ai-agents-1687</guid>
      <description>&lt;p&gt;AI agents are moving from generating text to taking actions — calling APIs, using tools, accessing data, and executing workflows.&lt;/p&gt;

&lt;p&gt;That changes the security problem.&lt;/p&gt;

&lt;p&gt;Model-level safety is not enough when an agent can directly affect real systems. The security boundary needs to exist where actions are actually executed.&lt;/p&gt;

&lt;p&gt;We built &lt;strong&gt;Aegisora 2.0&lt;/strong&gt;, an open-source runtime security and governance layer for autonomous AI agents.&lt;/p&gt;

&lt;p&gt;The execution flow is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intercept → Analyze → Policy → Decision → Enforcement → Audit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every action can be evaluated before execution and result in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ALLOW&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BLOCK&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ESCALATE&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important part is enforcement: a policy decision is made before the action reaches the external system.&lt;/p&gt;

&lt;p&gt;Aegisora is designed to work alongside agent frameworks and infrastructure rather than replace them.&lt;/p&gt;

&lt;h3&gt;
  
  
  The core idea
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don't just secure the model. Secure what the agent is allowed to do.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We're building Aegisora for developers working on autonomous agents, agentic workflows, and AI infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/aegisora-ai/aegisora" rel="noopener noreferrer"&gt;https://github.com/aegisora-ai/aegisora&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/aegisora-ai/aegisora/releases" rel="noopener noreferrer"&gt;https://github.com/aegisora-ai/aegisora/releases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We're especially interested in hearing from developers running agents with real tool or API access:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where do you currently enforce permissions, policies, and execution controls?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>opensource</category>
      <category>agents</category>
    </item>
    <item>
      <title>Why AI Agent Security Needs a Runtime Decision Layer</title>
      <dc:creator>Eray Özer</dc:creator>
      <pubDate>Sat, 22 Aug 2026 14:17:19 +0000</pubDate>
      <link>https://dev.to/ozereray/why-ai-agent-security-needs-a-runtime-decision-layer-42pe</link>
      <guid>https://dev.to/ozereray/why-ai-agent-security-needs-a-runtime-decision-layer-42pe</guid>
      <description>&lt;p&gt;AI agents are moving from generating text to taking actions.&lt;/p&gt;

&lt;p&gt;They can call APIs, query databases, execute tools, read files, trigger workflows, and interact with production systems.&lt;/p&gt;

&lt;p&gt;That changes the security problem.&lt;/p&gt;

&lt;p&gt;When an AI system produces an incorrect answer, the impact may be limited to bad information.&lt;/p&gt;

&lt;p&gt;When an AI agent executes the wrong tool call, the impact can be much larger.&lt;/p&gt;

&lt;p&gt;A useful security question is therefore:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What happens between the moment an agent decides to take an action and the moment that action actually executes?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The missing runtime decision layer
&lt;/h2&gt;

&lt;p&gt;Many agent systems already have controls around prompts, model outputs, application logic, and API permissions.&lt;/p&gt;

&lt;p&gt;Those controls are useful.&lt;/p&gt;

&lt;p&gt;But there is another important boundary:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;the action itself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A runtime security layer sits between the agent and the system it wants to affect.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI Agent
    │
    ▼
Runtime Security Layer
    │
    ├── ALLOW
    ├── BLOCK
    └── ESCALATE
    │
    ▼
Tool / API / Database / System
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important property is that the decision happens &lt;strong&gt;before execution&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why allow vs. block is sometimes not enough
&lt;/h2&gt;

&lt;p&gt;A traditional security policy often reduces a request to two outcomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ALLOW&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;BLOCK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That works well when requests are deterministic.&lt;/p&gt;

&lt;p&gt;Autonomous agents are different.&lt;/p&gt;

&lt;p&gt;Consider an agent attempting:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;transfer_funds(
    destination = "new_bank_account",
    amount = "$25,000"
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This action may be legitimate.&lt;/p&gt;

&lt;p&gt;It may also be dangerous.&lt;/p&gt;

&lt;p&gt;Automatically allowing it could create unnecessary risk.&lt;/p&gt;

&lt;p&gt;Automatically blocking it could break a legitimate workflow.&lt;/p&gt;

&lt;p&gt;This is where a third state becomes useful:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ESCALATE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The action can be paused and sent to a human reviewer.&lt;/p&gt;

&lt;p&gt;The resulting decision model becomes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Decision&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ALLOW&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The action is safe and policy-compliant.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BLOCK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The action clearly violates policy or matches a known dangerous pattern.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ESCALATE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The action is ambiguous or high-risk and requires human judgment.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Runtime enforcement changes the security boundary
&lt;/h2&gt;

&lt;p&gt;A runtime layer can evaluate more than the text of the prompt.&lt;/p&gt;

&lt;p&gt;Depending on the architecture, useful signals can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent identity&lt;/li&gt;
&lt;li&gt;Tool permissions&lt;/li&gt;
&lt;li&gt;Resource scope&lt;/li&gt;
&lt;li&gt;Data sensitivity&lt;/li&gt;
&lt;li&gt;Session context&lt;/li&gt;
&lt;li&gt;Rate limits&lt;/li&gt;
&lt;li&gt;Previous actions&lt;/li&gt;
&lt;li&gt;Known attack patterns&lt;/li&gt;
&lt;li&gt;Policy violations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That changes the question from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Was the model response safe?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Is this agent allowed to perform this specific action against this specific resource right now?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much stronger enforcement boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Human review should handle the ambiguous tail
&lt;/h2&gt;

&lt;p&gt;Human review is expensive.&lt;/p&gt;

&lt;p&gt;Sending every agent action to a person defeats much of the purpose of autonomous systems.&lt;/p&gt;

&lt;p&gt;A better model is to let deterministic decisions handle the obvious cases and reserve human review for the ambiguous cases.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Clear + safe
     │
     ▼
   ALLOW


Clear + dangerous
     │
     ▼
   BLOCK


Ambiguous / high-risk
     │
     ▼
 HUMAN REVIEW
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a useful principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Automate the obvious. Block the dangerous. Escalate the ambiguous.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What should a runtime security layer provide?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Deterministic policies
&lt;/h3&gt;

&lt;p&gt;Developers should be able to understand why an action was allowed or denied.&lt;/p&gt;

&lt;p&gt;Policies should be explicit enough to inspect, test, and modify.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Runtime enforcement
&lt;/h3&gt;

&lt;p&gt;A policy is much more useful when it actually controls execution rather than simply producing a warning after the action has happened.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Context-aware decisions
&lt;/h3&gt;

&lt;p&gt;The same action can have very different risk depending on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which agent requested it&lt;/li&gt;
&lt;li&gt;Which tool is being called&lt;/li&gt;
&lt;li&gt;Which resource is affected&lt;/li&gt;
&lt;li&gt;What happened earlier in the session&lt;/li&gt;
&lt;li&gt;What type of data is involved&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Human escalation
&lt;/h3&gt;

&lt;p&gt;Some decisions genuinely require context that cannot be represented as a simple binary rule.&lt;/p&gt;

&lt;p&gt;A good architecture should make human review an exception rather than the default.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Auditability
&lt;/h3&gt;

&lt;p&gt;Every security decision should leave enough information to answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What did the agent attempt?&lt;/li&gt;
&lt;li&gt;What policy was evaluated?&lt;/li&gt;
&lt;li&gt;What signals were detected?&lt;/li&gt;
&lt;li&gt;What decision was made?&lt;/li&gt;
&lt;li&gt;Why was that decision made?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without this information, investigating an incident becomes much harder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt injection is only part of the problem
&lt;/h2&gt;

&lt;p&gt;Prompt injection gets a lot of attention in agent security, and for good reason.&lt;/p&gt;

&lt;p&gt;But preventing malicious instructions from changing model behavior does not automatically solve the next problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens when the agent is allowed to perform a powerful action?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An agent can behave exactly as intended and still have too much authority.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User request
     ↓
Agent reasoning
     ↓
Tool call
     ↓
Production database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The security boundary should not disappear between the model and the tool.&lt;/p&gt;

&lt;p&gt;A stronger architecture adds an explicit enforcement layer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User request
     ↓
Agent reasoning
     ↓
Runtime policy
     ↓
ALLOW / BLOCK / ESCALATE
     ↓
Tool call
     ↓
Production system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The practical challenge
&lt;/h2&gt;

&lt;p&gt;The difficult part is not creating three labels.&lt;/p&gt;

&lt;p&gt;The difficult part is building reliable policies and signals that produce useful decisions without creating excessive false positives.&lt;/p&gt;

&lt;p&gt;A system that blocks everything is secure in theory but unusable in practice.&lt;/p&gt;

&lt;p&gt;A system that allows everything is convenient but dangerous.&lt;/p&gt;

&lt;p&gt;The real engineering challenge is finding the right balance.&lt;/p&gt;

&lt;p&gt;That means measuring things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;False-block rate&lt;/li&gt;
&lt;li&gt;False-allow rate&lt;/li&gt;
&lt;li&gt;Escalation rate&lt;/li&gt;
&lt;li&gt;Decision latency&lt;/li&gt;
&lt;li&gt;Review time&lt;/li&gt;
&lt;li&gt;Policy coverage&lt;/li&gt;
&lt;li&gt;Detection quality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And those measurements should be reproducible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where agent security is heading
&lt;/h2&gt;

&lt;p&gt;As AI agents gain access to more tools and infrastructure, the security model around them will need to evolve.&lt;/p&gt;

&lt;p&gt;The key question will increasingly be not just:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What did the model generate?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;but:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"What is the agent actually allowed to do?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That requires an enforcement boundary between intention and execution.&lt;/p&gt;

&lt;p&gt;The agent can remain autonomous.&lt;/p&gt;

&lt;p&gt;Its authority does not have to be unlimited.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don't just secure the model. Secure the action.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI assistance disclosure:&lt;/strong&gt; This article was created with AI assistance and reviewed and edited by the author for accuracy and completeness.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>agents</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why Traditional API Gateways Fail Autonomous AI Agents (And How We Fixed It)</title>
      <dc:creator>Eray Özer</dc:creator>
      <pubDate>Fri, 07 Aug 2026 13:29:27 +0000</pubDate>
      <link>https://dev.to/ozereray/why-traditional-api-gateways-fail-autonomous-ai-agents-and-how-we-fixed-it-3l14</link>
      <guid>https://dev.to/ozereray/why-traditional-api-gateways-fail-autonomous-ai-agents-and-how-we-fixed-it-3l14</guid>
      <description>&lt;p&gt;We are moving rapidly from experimental chat interfaces (like ChatGPT wrappers) into the era of fully autonomous AI agents. These agents don't just generate text; they are granted direct access to enterprise APIs, internal databases, and execution environments. &lt;/p&gt;

&lt;p&gt;But as engineering teams rush to deploy agentic workflows, a massive architectural blind spot is emerging: &lt;strong&gt;Runtime Security&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem: Legacy Middleware Chokes the Agent Loop
&lt;/h3&gt;

&lt;p&gt;Most enterprises attempt to secure AI agents by hiding them behind traditional API gateways or static Web Application Firewalls (WAFs). Here is why that approach breaks down in production:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Semantic Blindness:&lt;/strong&gt; A traditional firewall looks for SQL injections (&lt;code&gt;DROP TABLE&lt;/code&gt;) or specific malicious headers. It has no idea what to do with a semantic prompt injection hidden inside a natural language payload. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unacceptable Latency:&lt;/strong&gt; Autonomous agents often run multi-step reasoning loops (like ReAct). If you route every single tool-call and LLM response through a heavy external governance middleware, you introduce massive latency overhead. The agent loop chokes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Silent PII Leaks:&lt;/strong&gt; Agents often scrape or process vast amounts of unstructured data. Traditional DLP (Data Loss Prevention) tools are too slow to intercept and redact Personally Identifiable Information (PII) on the fly before it hits an external LLM provider.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enterprise AI needs a new kind of defense layer. It needs to be incredibly fast, context-aware, and deployed directly alongside the agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enter Aegisora: A Zero-Latency Runtime Proxy
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fry0yp06fx62j2a1slf1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fry0yp06fx62j2a1slf1u.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To solve this, we built &lt;a href="https://github.com/ozereray/aegisora.ai" rel="noopener noreferrer"&gt;Aegisora&lt;/a&gt;—an open-source, zero-latency governance and proxy layer designed specifically for autonomous AI agents and AppSec teams.&lt;/p&gt;

&lt;p&gt;Instead of relying on bloated external middleware, Aegisora sits directly between your agents and your LLM endpoints. It acts as a narrow control plane that provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Real-time Interception:&lt;/strong&gt; Inbound prompts and outbound tool-calls are scanned instantly to detect adversarial patterns and prompt injections.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;On-the-fly PII Masking:&lt;/strong&gt; Automatically detect and redact sensitive corporate assets (SSNs, API keys) before the payload ever reaches external endpoints like OpenAI or Anthropic.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Least-Privilege API Access:&lt;/strong&gt; Human-in-the-loop protocols for high-stakes decisions, ensuring agents can't execute unauthorized API bursts.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Zero-Latency Overhead:&lt;/strong&gt; Built for speed, ensuring your agent's reasoning loops remain fast and uninterrupted.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Let's Build Secure AI Together 🛡️
&lt;/h3&gt;

&lt;p&gt;Security in the age of autonomous agents shouldn't be a black box controlled by a few massive vendors. We believe the future of AI governance is &lt;strong&gt;open-source&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;We are building Aegisora in public and we need the community's help to stress-test the architecture, break the proxy, and improve the runtime defenses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check out the architecture and drop a star on our GitHub repo:&lt;/strong&gt;&lt;br&gt;
👉 &lt;a href="https://github.com/ozereray/aegisora.ai" rel="noopener noreferrer"&gt;Aegisora GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How is your team handling runtime validation for AI agents? Let’s discuss in the comments below!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>security</category>
      <category>python</category>
    </item>
    <item>
      <title>How to Build Resilient AI Agents: Stop Flaky LLM Calls from Crashing Your App 🛡️</title>
      <dc:creator>Eray Özer</dc:creator>
      <pubDate>Fri, 03 Apr 2026 15:03:26 +0000</pubDate>
      <link>https://dev.to/ozereray/how-to-build-resilient-ai-agents-stop-flaky-llm-calls-from-crashing-your-app-194f</link>
      <guid>https://dev.to/ozereray/how-to-build-resilient-ai-agents-stop-flaky-llm-calls-from-crashing-your-app-194f</guid>
      <description>&lt;p&gt;Building autonomous agents with LLMs is exciting, but let's be honest: &lt;strong&gt;external APIs are unpredictable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You've probably seen your agentic workflow crash because of a random &lt;code&gt;TimeoutError&lt;/code&gt;, a &lt;code&gt;ConnectionError&lt;/code&gt;, or the dreaded &lt;strong&gt;Rate Limit&lt;/strong&gt;. In production, &lt;em&gt;"trying again manually"&lt;/em&gt; isn't an option.&lt;/p&gt;

&lt;p&gt;Last night, I built and released &lt;strong&gt;Veridian Guard&lt;/strong&gt; — a lightweight, zero-dependency safety layer designed specifically to handle these failures gracefully.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: Flaky APIs &amp;amp; Bloated Code
&lt;/h2&gt;

&lt;p&gt;Traditionally, you'd wrap every call in a &lt;code&gt;try-except&lt;/code&gt; block with a &lt;code&gt;while&lt;/code&gt; loop for retries. It works, but it makes your code messy and hard to maintain — especially when dealing with complex asynchronous agent frameworks like LangChain or CrewAI.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution: Veridian Guard 🌿
&lt;/h2&gt;

&lt;p&gt;Veridian Guard provides a robust &lt;code&gt;@guard&lt;/code&gt; decorator that manages retries, delays, and fallbacks with just &lt;strong&gt;one line of code&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Quick Start
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
pip install veridian-guard
Wrap any flaky function, and it's protected:
from veridian.guard import guard
import random

@guard(max_retries=3, delay=1.0, fallback="Default safe response")
def call_llm_agent():
    if random.random() &amp;lt; 0.7:
        raise ConnectionError("LLM API Timeout!")
    return "Agent succeeded!"

print(call_llm_agent())

⚡ Seamless Async/Await Support
One of the features I'm most proud of is its automatic detection. Whether your function is synchronous (def) or asynchronous (async def), Veridian Guard knows exactly how to handle it. No extra configuration needed.
import asyncio
from veridian.guard import guard

@guard(max_retries=3, delay=2.0, fallback={"status": "failed"})
async def fetch_data_from_llm():
    await asyncio.sleep(1)
    raise TimeoutError("API is too busy!")

async def main():
    result = await fetch_data_from_llm()
    print(result)  # Output: {'status': 'failed'}

asyncio.run(main())

✨ Why Veridian Guard?
Zero Dependencies — Pure Python. Keeps your environment clean and lightweight.
Smart Logging — Automatically logs failed attempts so you can monitor where your agent is struggling.
Fail-Safe Fallbacks — Ensure your main application loop never crashes again.
Error Tolerance — Focus on the logic; let Guard handle the instability.

🛠️ Get Involved
I built this to solve a real pain point in my own AI projects at Vyno AI, and I hope it helps the community build more reliable autonomous systems.
I'd love to hear your feedback, suggestions, or see your contributions!

⭐ GitHub:(https://github.com/ozereray/veridian)
📦 PyPI: veridian-guard

Happy coding! 🌿🛡️
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
