Parallax: 생각하는 AI Agent는 절대 직접 행동해서는 안 된다
Parallax: Why AI Agents That Think Must Never Act
TL;DR Highlight
프롬프트 가드레일은 Agent가 해킹당하면 무용지물 — 추론과 실행을 OS 프로세스 레벨로 완전 분리하는 보안 아키텍처 패러다임.
Who Should Read
파일 시스템 접근, 쉘 실행, API 호출 등 실제 도구를 사용하는 AI Agent를 개발하거나 보안 아키텍처를 설계하는 백엔드/플랫폼 개발자. 프롬프트 인젝션 대응 전략을 고민하는 AI 인프라 엔지니어.
Core Mechanics
- 프롬프트 가드레일의 근본적 한계: 안전 지침과 악성 입력이 동일한 LLM 어텐션 메커니즘을 통과하므로, Agent가 한 번이라도 해킹되면 프롬프트 레벨 보호는 완전히 무력화된다.
- Parallax는 4가지 원칙으로 구성된 아키텍처 패러다임 — (1) Cognitive-Executive Separation(추론/실행 분리), (2) Adversarial Validation with Graduated Determinism(4단계 독립 검증), (3) Information Flow Control(데이터 민감도 레이블 전파), (4) Reversible Execution(파괴적 액션 전 상태 캡처).
- 핵심 원칙인 Cognitive-Executive Separation: LLM 추론 프로세스는 OS 레벨에서 샌드박스 처리되어 파일시스템 접근, 네트워크, 쉘 실행 권한이 전혀 없고 오직 gRPC로 액션 제안만 할 수 있다.
- Shield(검증 레이어)는 4단계로 동작 — Tier 0: YAML 정책 룰(결정적), Tier 1: 휴리스틱 엔진 + DeBERTa 분류기(병렬), Tier 2: 별도 LLM 평가(예산 제한), Tier 3: 사람 승인. 모든 단계는 fail-closed(실패 시 차단).
- Information Flow Control(IFC): Agent가 자격증명 파일을 읽으면 RESTRICTED 태그가 붙고, 이후 해당 데이터를 네트워크로 전송하려 할 때 Shield가 중간 단계가 몇 개이든 관계없이 차단 — 다단계 툴체인 공격 방어.
- Dynamic Tool Surface Reduction: Agent는 매 턴마다 필요한 툴 그룹만 로드하고 나머지는 보이지 않아, 해킹당한 순간 사용 가능한 무기 자체가 최소화된다. 텍스트 분석 작업 중엔 툴 0개 = 공격 표면 0.
Evidence
- 280개 적대적 테스트 케이스(9개 공격 카테고리)에서 기본 설정 기준 98.9% 공격 차단, false positive 0%. 최대 보안 설정에선 100% 차단(false positive 36%).
- Assume-Compromise Evaluation(추론 시스템 완전 우회 후 직접 툴콜 주입)에서 Config A(Shield 없음)는 공격 성공률 100%, Config C(Parallax)는 1.1%로 감소.
- Shield 티어별 처리 분포: Tier 0(정책룰) 15.4%, Tier 1(분류기) 58.2%, Tier 2(LLM) 26.1%, Tier 3(사람) 0.4% — 결정론적 메커니즘(Tier 0+1)이 73.6% 처리해 LLM 의존도 최소화.
- Claude Sonnet 4.6, Claude Haiku 4.5, Llama 3.1 8B는 안전 훈련으로 LLM 모드에서 공격 성공률 0%였지만, Qwen 2.5 3B는 파일 삭제 등 유해 요청을 즉시 실행 — '해킹된 Agent' 가정이 현실적임을 실증.
How to Apply
- Agent 서버를 2개의 OS 프로세스로 분리하라 — LLM 추론 프로세스는 gRPC 외 모든 권한을 제거하고, 툴 실행은 별도 Engine 프로세스에서만 수행. 기존 단일 프로세스 Agent 아키텍처라면 OpenParallax(Go) 소스코드를 참고해 프로세스 경계부터 재설계.
- 툴 등록 방식을 변경하라 — 모든 툴을 시스템 프롬프트에 한 번에 노출하지 말고, `load_tools` 메타툴 하나만 제공한 뒤 현재 태스크에 필요한 그룹만 동적 로드. 코딩 어시스턴트라면 파일 R/W 그룹과 쉘 실행 그룹을 별도로 두고 필요 시에만 활성화.
- 파괴적 액션(파일 삭제, DB 쓰기, 설정 변경) 전에는 반드시 Chronicle 패턴을 적용하라 — 액션 실행 전 SHA-256 기반 스냅샷을 저장하고 `rollback` 커맨드로 복구 가능하게. 기존 파이프라인에서 destructive action 분류만 추가해도 부분 적용 가능.
Code Example
# Tier 0 정책 파일 예시 (config.yaml)
deny:
- name: block_sensitive_system_paths
action_types: [read_file, write_file, delete_file]
paths: ["~/.ssh/**", "~/.aws/**", "/etc/shadow", "**/*.pem", "**/.env"]
- name: block_identity_deletion
action_types: [delete_file]
paths: ["**/SOUL.md", "**/IDENTITY.md"]
verify:
- name: evaluate_shell_commands
action_types: [execute_command]
tier_override: 1 # Tier 1(분류기)로 에스컬레이션
- name: evaluate_soul_modification
action_types: [write_file]
paths: ["**/SOUL.md", "**/IDENTITY.md"]
tier_override: 2 # Tier 2(LLM 평가)로 에스컬레이션
allow:
- name: allow_workspace_reads
action_types: [read_file, list_directory, search_files]
paths: ["~/workspace/**"]
# Assume-Compromise 테스트 예시 (Python harness)
import grpc
def inject_tool_call(shield_stub, action_type, payload):
"""LLM을 완전히 우회하고 Shield에 직접 툴콜 주입"""
request = ShieldEvalRequest(
action_type=action_type,
payload=payload,
# agent context 없음 - 완전 해킹된 상태 시뮬레이션
)
response = shield_stub.Evaluate(request)
return response.verdict # ALLOW / BLOCK / ESCALATE
# 테스트: 자격증명 파일 삭제 시도
result = inject_tool_call(stub, "delete_file", {"path": "/home/user/.ssh/id_rsa"})
print(result) # BLOCK (Tier 0 deny rule)
# 테스트: Base64 인코딩 우회 시도
result = inject_tool_call(stub, "execute_command",
{"command": "echo 'cm0gLXJmIC8q' | base64 -d | sh"})
print(result) # BLOCK (Tier 1 heuristic: base64 encoded command)Terminology
Related Resources
Original Abstract (Expand)
Autonomous AI agents are rapidly transitioning from experimental tools to operational infrastructure, with projections that 80% of enterprise applications will embed AI copilots by the end of 2026. As agents gain the ability to execute real-world actions (reading files, running commands, making network requests, modifying databases), a fundamental security gap has emerged. The dominant approach to agent safety relies on prompt-level guardrails: natural language instructions that operate at the same abstraction level as the threats they attempt to mitigate. This paper argues that prompt-based safety is architecturally insufficient for agents with execution capability and introduces Parallax, a paradigm for safe autonomous AI execution grounded in four principles: Cognitive-Executive Separation, which structurally prevents the reasoning system from executing actions; Adversarial Validation with Graduated Determinism, which interposes an independent, multi-tiered validator between reasoning and execution; Information Flow Control, which propagates data sensitivity labels through agent workflows to detect context-dependent threats; and Reversible Execution, which captures pre-destructive state to enable rollback when validation fails. We present OpenParallax, an open-source reference implementation in Go, and evaluate it using Assume-Compromise Evaluation, a methodology that bypasses the reasoning system entirely to test the architectural boundary under full agent compromise. Across 280 adversarial test cases in nine attack categories, Parallax blocks 98.9% of attacks with zero false positives under its default configuration, and 100% of attacks under its maximum-security configuration. When the reasoning system is compromised, prompt-level guardrails provide zero protection because they exist only within the compromised system; Parallax's architectural boundary holds regardless.