Control Flow Keeps Agents Honest. Audit Proves They Were.
요약
LLM 기반 에이전트의 신뢰성을 확보하기 위해서는 단순한 프롬프팅을 넘어선 명시적인 제어 흐름(Control Flow) 설계가 필수적입니다. 개발자 관점에서 제어 흐름은 에이전트의 동작을 제한하고 검증 가능한 스캐폴드(scaffold)를 제공하지만, 외부 감사자(auditor)는 이 내부 구조에 접근할 수 없습니다. 따라서, 에이전트의 선언된 제어 흐름과 실제 런타임 행동을 모두 기록하고 암호학적으로 서명하는 '행동 감사(Behavioral Audit)'가 필요하며, 이를 통해 에이전트가 의도한 대로 작동했음을 외부에서 검증할 수 있습니다.
핵심 포인트
- LLM은 시스템 제어 요소가 아니므로, 결정론적 스캐폴드와 명시적 상태 전이(Explicit State Transitions)를 통한 제어 흐름 설계가 필수적이다.
- 제어 흐름은 개발자에게 에이전트의 동작을 제한하고 검증하는 내부 구조를 제공하지만, 외부 이해관계자는 이 내부 로직에 접근할 수 없다.
- 외부에서 신뢰성을 증명하려면, 선언된 제어 흐름(Intention)과 실제 런타임 행동(Behavior) 모두를 기록하고 암호학적으로 서명한 '행동 감사 트레일'이 필요하다.
- 단순히 동작을 추적하는 것만으로는 부족하며, 예상치 못한 조건에서의 편차까지 포착할 수 있는 구조화된 검증 메커니즘이 중요하다.
Brian 의 글 "agents need control flow, not more prompts" 이 HN 프론트 페이지에 300+ 포인트로 올라왔고, 핵심 주장은 맞습니다: 프롬팅은 프로그래밍 언어가 아닙니다. 신뢰할 수 있는 에이전트는 결정론적 스프링클 (deterministic scaffolding), 명시적 상태 전이 (explicit state transitions), 검증 체크포인트 (validation checkpoints) 가 필요합니다. LLM 은 시스템을 제어하는 구성 요소가 아니라, 시스템의 강력한 프롬팅 의지 (sheer prompting willpower) 를 통해 스스로를 제어하는 시스템이 아닙니다. 한 코멘터는 이를 완벽하게 표현했습니다: "90% 의 경우에 올바른 것을 결정론적인 것으로 만들어내는 것은 100% 의 정확도를 가진 결정론적인 것을 생성합니다." 이는 맞습니다. 그리고 이는 공백을 남깁니다. Control flow 는 에이전트의 내부 관점입니다 (제어 흐름) When you add control flow to an agent (explicit branching, validation gates, retry logic, typed I/O), you create a scaffold that constrains what the agent can do. The LLM still decides. The scaffold ensures those decisions run through the right checks. This solves the developer's problem: your agent stops silently skipping steps, stops hallucinating tool calls, stops reaching conclusions without verification. It doesn't solve the external observer's problem. API providers, enterprises deploying agents they didn't build, platforms running third-party agent integrations: none of them have access to your control flow. They can't read your Temporal workflow. They can't inspect your typed schemas. They can't audit the state transitions you declared. They see behavior: the sequence of tool calls, API requests, and state changes the agent actually produced at runtime. The gap between "built correctly" and "ran correctly" Here's the practical issue: an agent with perfect control flow looks identical to a compromised agent from the outside. An agent that has a well-designed deterministic scaffold, ran successfully 10,000 times, and is currently being exploited via prompt injection presents the same external signature as an agent that was never compromised. Both have valid credentials. Both pass identity checks. The control flow in the first case is real; in the second, the scaffold was entered with injected instructions and followed the injected path. Claude Code's 51st command bypass is instructive here. The policy was declared. The implementation had a performance cap at 50 subcommands. Above 50, the deny rules silently disabled. The control flow (such as it was) passed the developer's tests. The runtime behavior diverged from the declared policy in a specific state condition the scaffold didn't account for. This is t
TOCTOU 문제 (Time-of-check time-of-use) 를 에이전트 스프레드 (scaffold) 에 적용합니다: 빌드 시점에 스프레드를 검증하지만, 악용은 검증 후 런타임에 발생합니다. 행동 감사 (behavioral audit) 는 제어 흐름 (control flow) 의 외부 보완입니다. 제어 흐름은: 에이전트가 이러한 조건에서 이러한 경로를 취해야 한다고 말합니다. 행동 감사는 기록합니다: 에이전트는 이러한 시간戳에서 이러한 경로를 실제로 취했습니다, 암호학적으로 서명되었습니다. 이 조합이 에이전트 행동을 단순히 선언된 것보다 검증 가능하게 만듭니다. Temporal 워크플로우 (workflow) 와 모든 도구 호출의 해시 체인 감사 트레일 (audit trail) 을 가진 에이전트는 외부 검증자에게 런타임에 선언된 제어 흐름이 실제로 따랐음을 증명할 수 있습니다. 워크플로우만 있는 에이전트는 의도를 선언할 수 있지만, 감사 트레일만 있는 에이전트는 구조를 설명하지 않고 행동을 증명할 수 있습니다. 감사 트레일은 제어 흐름이 잡지 못하는 것을 또한 포착합니다: 스프레드가 예상치 못한 조건에서의 편차. 단계 17 에서의 프롬프트 주입 (prompt injection). 예상치 못한 데이터를 반환하여 에이전트가 선언되지 않은 분지를 취하게 만든 도구. 51 번째 서브명령어 (subcommand). 에이전트 인프라를 위한 의미 Brian 의 글에서 얻은 통찰은 에이전트의 제어 흐름이 프롬프트가 아닌 결정론적 코드에 있어야 한다는 것입니다. 이는 내부적으로 에이전트를 더 신뢰할 수 있도록 만드는 개발 시점의 결정입니다. 에이전트 보안 연구 (MCPwn, TOCTOU, 교차 조직 신뢰 격차) 에서 얻은 통찰은 행동 감사 트레일이 외부 관찰자가 외부에서 준수 여부를 검증하는 방법이라는 것입니다. 이들은 경쟁하지 않고 상호 보완적입니다. 잘 설계된 에이전트는 두 가지 모두를 가집니다: 무엇을 할 수 있는지 제한하는 결정론적 스프레딩 (scaffolding) 과, 무엇을 했음을 증명하는 감사 인프라입니다. L1/L2/L3 (World ID for Agents, Okta, Microsoft Agent 365) 을 경쟁하는 프레임워크는 신원 및 권한 관리 (identity and authorization) 를 처리합니다. 제어 흐름 논리는 내부 신뢰성을 다룹니다. L4 (교차 조직 행동 연속성) 은 인프라에서 실행 중인 에이전트가 테스트 환경에서 10,000 회 호출 전에 올바르게 실행된 동일한 에이전트인지 여부를 다룹니다. 이는 아직 누락된 층입니다. AgentLair 를 구축합니다 — 교차 조직 행동 신뢰 인프라. AAT 스펙 (spec), JWKS 검증, 해시 체인 감사 트레일은 라이브입니다. team@agentlair.dev 이 포스트는 Brian Suh 의
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기