const R={
cot:'https://arxiv.org/abs/2201.11903',
react:'https://arxiv.org/abs/2210.03629',
weng:'https://lilianweng.github.io/posts/2023-06-23-agent/',
bea:'https://www.anthropic.com/news/building-effective-agents',
ctx:'https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents',
wiki:'https://en.wikipedia.org/wiki/Agent_harness',
pe:'https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview'};
const P=({children})=><p style={{fontSize:14,lineHeight:1.7,color:'var(--text-muted)',margin:'0 0 20px'}}>{children}</p>;
const H2=({children})=><h2 style={{fontSize:20,fontWeight:700,color:'var(--text-body)',margin:'48px 0 16px'}}>{children}</h2>;
const Q=({cite,href,children})=><blockquote style={{margin:'28px 0',padding:'16px 20px',borderLeft:'2px solid var(--accent)',background:'var(--surface-card)',fontSize:14,color:'var(--text-body)',fontStyle:'normal'}}>{children}<div style={{marginTop:10,fontSize:12}}><a href={href} target="_blank">— {cite}</a></div></blockquote>;
function ArticleLoops(){
return <article style={{maxWidth:720,margin:'0 auto'}}>
<div style={{fontFamily:'var(--font-display)',fontSize:11,letterSpacing:'var(--tracking-caps)',color:'var(--accent)',marginBottom:16}}>/AI-SECURITY · 2026-07-11</div>
<h1 style={{fontSize:'var(--text-2xl)',fontWeight:700,lineHeight:1.2,margin:'0 0 12px'}}>From prompts to loops</h1>
<div style={{fontSize:14,color:'var(--text-faint)',marginBottom:40}}>How the center of gravity in AI engineering moved four times in six years — and what each move did to the attack surface.</div>
<BlogFig caption="Fig. 1 — Four eras: where the engineering effort lives."><EraTimeline/></BlogFig>
<H2>2020–2022 · Prompt engineering</H2>
<P>The first era treated the model as the whole product. If output was wrong, you rewrote the input: few-shot examples, role instructions, output templates. Chain-of-thought prompting (<a href={R.cot} target="_blank">Wei et al., 2022</a>) showed that a phrase like "think step by step" could unlock reasoning the model already had — evidence that the input text was a genuine engineering surface, worth documenting the way vendors now do in their <a href={R.pe} target="_blank">prompt-engineering guides</a>.</P>
<P>The limit was structural: a prompt runs once. The model reads text and writes text, holds no state, and touches nothing. Every task that needed a second step needed a human to paste the output back in.</P>
<H2>2023 · Agent engineering</H2>
<P>ReAct (<a href={R.react} target="_blank">Yao et al., 2022</a>) interleaved reasoning traces with tool calls, and the pattern escaped the lab within months. Lilian Weng's widely-cited <a href={R.weng} target="_blank">survey</a> framed the anatomy that stuck: planning, memory, and tool use around an LLM core. The engineering unit was no longer the prompt but the toolset — schemas, routing, and the workflow that chained calls together.</P>
<P>Anthropic's <a href={R.bea} target="_blank">"Building effective agents"</a> (Dec 2024) closed the era with a field report: the teams that shipped weren't the ones with the most elaborate frameworks.</P>
<Q cite="Building effective agents, Anthropic" href={R.bea}>Consistently, the most successful implementations weren't using complex frameworks or specialized libraries. Instead, they were building with simple, composable patterns.</Q>
<H2>2024–2025 · The harness</H2>
<P>Once agents ran for hours instead of seconds, everything <em>around</em> the model — tool execution, memory, sandboxes, permissions, state that survives a crash — mattered more than another point of benchmark. That layer got a name: the <a href={R.wiki} target="_blank">agent harness</a>, summarized as <strong style={{color:'var(--text-body)'}}>Agent = Model + Harness</strong>. The same model behaves differently in different products because the harness differs; Claude Code and Codex CLI are harnesses before they are anything else.</P>
<P>Harness engineering also changed how failures are read: a bad run stops being a prompt to retry and becomes a system defect to fix permanently — in the loop, the tool contract, or the permission policy.</P>
<H2>2025– · The loop</H2>
<P>The definitions kept shrinking until one survived. Anthropic's <a href={R.ctx} target="_blank">context-engineering post</a> states the convergence plainly:</P>
<Q cite="Effective context engineering for AI agents, Anthropic" href={R.ctx}>We've gravitated towards a simple definition for agents: LLMs autonomously using tools in a loop.</Q>
<BlogFig caption="Fig. 2 — The loop. Everything except the model box is harness."><LoopDiagram/></BlogFig>
<P>In the loop era the craft is curation: what enters the context each iteration, what gets verified before the next one, and when the loop is allowed to stop. As models improve, the same loop carries more autonomy — the harness stays, the leash lengthens.</P>
<H2>Why we care</H2>
<P>Each era moved the trust boundary. Prompt injection attacked the input; agent-era attacks abused tools; harness-era attacks target policy — who may call what, with which arguments, inside whose sandbox. A loop that acts, observes, and acts again is a control system, and control systems are audited, not prompted. That audit is our job: it is what <a href="index.html#agents">/agents</a> engagements exist for.</P>
<div style={{marginTop:56,borderTop:'1px solid var(--border-default)',paddingTop:24}}>
<div style={{fontFamily:'var(--font-display)',fontSize:11,letterSpacing:'var(--tracking-caps)',color:'var(--text-faint)',marginBottom:14}}>REFERENCES</div>
<ol style={{margin:0,paddingLeft:20,display:'flex',flexDirection:'column',gap:8,fontSize:12,color:'var(--text-muted)'}}>
<li>Wei et al. — <a href={R.cot} target="_blank">Chain-of-Thought Prompting Elicits Reasoning in LLMs</a> (2022)</li>
<li>Yao et al. — <a href={R.react} target="_blank">ReAct: Synergizing Reasoning and Acting in Language Models</a> (2022)</li>
<li>Lilian Weng — <a href={R.weng} target="_blank">LLM Powered Autonomous Agents</a> (2023)</li>
<li>Anthropic — <a href={R.bea} target="_blank">Building effective agents</a> (2024)</li>
<li>Anthropic — <a href={R.ctx} target="_blank">Effective context engineering for AI agents</a> (2025)</li>
<li>Wikipedia — <a href={R.wiki} target="_blank">Agent harness</a></li>
</ol></div>
</article>;
}
window.ArticleLoops=ArticleLoops;
