Build vs buy the agent runtime is not ideological. Bedrock Agents, a custom loop on Step Functions, and IDE hooks (Cursor-style) optimize for different constraints.
⚡ TL;DR: Buy/managed when tool schemas are simple and AWS-native. Custom loop when you need strict dual control, twins, and audit. IDE hooks for developer UX — not for prod mutate paths.
Decision table
| Constraint | Lean |
|---|---|
| Fast AWS SaaS CRUD | Bedrock Agents |
| Dual control + twin + OPA | Custom (Day 33/88/69) |
| In-editor coding assist | IDE hooks / local |
| Multi-cloud / on-prem | Custom |
| Strong prompt/version pins | Gateway + either |
# ✅ Thin custom loop — still behind gateway
def agent_turn(state, model, tools, policy):
plan = model.plan(state)
for intent in plan.intents:
policy.check(intent) # Cedar/OPA
result = tools.dry_run(intent) if intent.mutate else tools.run(intent)
state = state.reduce(intent, result)
if state.should_stop():
break
return state
❌ Rewriting a managed agent framework from scratch to avoid reading the docs — or adopting managed agents when you need byte-level audit of every tool.
Failure modes
Managed agents that cannot emit the audit shape compliance requires — you will rewrite later at 10× cost. Spike audit export on week one. Custom loops that reinvent tool JSON parsing bugs — reuse validated schemas either way.
Closing checklist
- [ ] Constraints listed before vendor demo
- [ ] Spike both paths on one real workflow
- [ ] Audit/dual-control requirements written
- [ ] Exit plan if managed lock-in hurts
- [ ] Gateway remains the front door either way
Series navigation
Day 96: Hiring and Team Topology for AI Platform · Day 98: Capstone Spec: Pick One Production Problem
Last updated September 11, 2026
Discover more from CheatCoders
Subscribe to get the latest posts sent to your email.
