<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Security on AI + Quant Engineering</title><link>https://miasyster.github.io/en/tags/security/</link><description>Recent content in Security on AI + Quant Engineering</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://miasyster.github.io/en/tags/security/index.xml" rel="self" type="application/rss+xml"/><item><title>Harness Is Governance: Constraining Agents with Code, Not Prompts</title><link>https://miasyster.github.io/en/posts/harness-is-governance/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://miasyster.github.io/en/posts/harness-is-governance/</guid><description>The mainstream approach to Agent governance is writing rules in prompts. But LLMs can ignore prompts. Real governance lives outside the Agent, in the Harness layer — tools define what&amp;rsquo;s possible, errors define what&amp;rsquo;s forbidden, code defines where the boundaries are.</description></item><item><title>The Expression Parser Is a Compiler, Not eval()</title><link>https://miasyster.github.io/en/posts/expression-parser-is-a-compiler/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate><guid>https://miasyster.github.io/en/posts/expression-parser-is-a-compiler/</guid><description>QuantGPT&amp;rsquo;s core is an 870+ line hand-written recursive descent parser supporting 80+ operators, automatic cross-sectional/time-series grouping, and dual-mode compilation. Not because I didn&amp;rsquo;t know eval() is simpler — but because what eval() can&amp;rsquo;t do happens to be what matters most.</description></item><item><title>API Guard Pattern: Why Calling Functions Directly Is Forbidden</title><link>https://miasyster.github.io/en/posts/api-guard-pattern/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><guid>https://miasyster.github.io/en/posts/api-guard-pattern/</guid><description>QuantGPT uses threading.local to enforce a runtime guard: all backtest calls must go through the API boundary. Direct function calls raise an exception. Not because the function is dangerous — but because a system without boundaries can&amp;rsquo;t be audited.</description></item><item><title>Let AI's Code Run — But Don't Let It Run Away</title><link>https://miasyster.github.io/en/posts/sandbox-defense-in-depth/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate><guid>https://miasyster.github.io/en/posts/sandbox-defense-in-depth/</guid><description>AI-generated code must be executed — otherwise it&amp;rsquo;s just text. But execution means risk. I didn&amp;rsquo;t choose container isolation or RestrictedPython. Instead I designed a three-layer defense: reject dangerous structures at compile time via AST, replace the entire builtins at runtime, and enforce OS-level resource limits as a backstop. Each layer handles a different class of risk. Overlapping but not redundant.</description></item></channel></rss>