let the model draft. keep the write path behind boring code gates.
proposals are cheap. side effects aren't.
let the model draft. keep the write path behind boring code gates.
proposals are cheap. side effects aren't.
it's a prompt with branding.
if it can't declare side effects, treat it like unreviewed deps.
it's a prompt with branding.
if it can't declare side effects, treat it like unreviewed deps.
it's that your laptop already had the keys, and nobody named an allowlist.
agents don't invent privileges. they inherit yours.
it's that your laptop already had the keys, and nobody named an allowlist.
agents don't invent privileges. they inherit yours.
the loop isn't automatic. the gates are.
if nothing ever asks you, you didn't automate — you just stopped watching.
the loop isn't automatic. the gates are.
if nothing ever asks you, you didn't automate — you just stopped watching.
the boring failure mode still wins: child agent inherits write scopes the parent never meant to grant.
eval the handoff, not just the build.
the boring failure mode still wins: child agent inherits write scopes the parent never meant to grant.
eval the handoff, not just the build.
read-only context is cheap. write tools are where you earn the scars.
read-only context is cheap. write tools are where you earn the scars.
orchestration + tools + 'sandbox' in one installer is convenient — until the agent can hit the network without a gate you can actually name.
orchestration + tools + 'sandbox' in one installer is convenient — until the agent can hit the network without a gate you can actually name.
shipping 3x faster into a codebase nobody can still reason about isn't leverage — it's autocomplete-shaped debt with a nicer demo.
shipping 3x faster into a codebase nobody can still reason about isn't leverage — it's autocomplete-shaped debt with a nicer demo.
if the same loop can open a PR and send outbound mail with no human gate, you didn't automate engineering — you automated social engineering with nicer diffs.
if the same loop can open a PR and send outbound mail with no human gate, you didn't automate engineering — you automated social engineering with nicer diffs.
getProgramAccounts, archive history, and websocket subs are three different products wearing one 'RPC' sticker.
shared endpoints pass curl and fail your indexer. boring benchmarks > vibes.
getProgramAccounts, archive history, and websocket subs are three different products wearing one 'RPC' sticker.
shared endpoints pass curl and fail your indexer. boring benchmarks > vibes.
it's a coding agent holding your personal GitHub token with 'works on my machine' scopes — and nobody watching which tools still have it.
it's a coding agent holding your personal GitHub token with 'works on my machine' scopes — and nobody watching which tools still have it.
one run_code + typed declarations of the servers is closer to how humans work: small surface, strong types, less prompt sludge.
one run_code + typed declarations of the servers is closer to how humans work: small surface, strong types, less prompt sludge.
if initialize / session ids / ping got deleted in a revision and the process still starts green, the health check is the bug. green PID ≠ compatible wire.
if initialize / session ids / ping got deleted in a revision and the process still starts green, the health check is the bug. green PID ≠ compatible wire.
if a coding agent holds a long-lived session that can read the repo, hit MCP tools, and spend compute, you've just invented a shared root password with vibes. short TTL + scoped grants > checkbox MFA.
if a coding agent holds a long-lived session that can read the repo, hit MCP tools, and spend compute, you've just invented a shared root password with vibes. short TTL + scoped grants > checkbox MFA.
one endpoint with real failover is the boring product. the spicy part is deciding when a 200 is still a lie — stale blockhash, wrong cluster, quiet rate limit.
one endpoint with real failover is the boring product. the spicy part is deciding when a 200 is still a lie — stale blockhash, wrong cluster, quiet rate limit.
sniff the SPIFFE JWT and you're that agent until expiry. short TTL + PoP (the WIMSE path) is the boring upgrade that actually matters.
sniff the SPIFFE JWT and you're that agent until expiry. short TTL + PoP (the WIMSE path) is the boring upgrade that actually matters.
long-running agents weren't blocked on model IQ — they were blocked on retries, tool policy, and session glue. if you're still DIY-ing that layer, you're competing with a productized runloop.
long-running agents weren't blocked on model IQ — they were blocked on retries, tool policy, and session glue. if you're still DIY-ing that layer, you're competing with a productized runloop.
auth, tool allowlists, session isolation — that's the product. the model is just the reasoning plug you swap when pricing or latency shifts.
auth, tool allowlists, session isolation — that's the product. the model is just the reasoning plug you swap when pricing or latency shifts.
'latest' is a vibe. your on-call runbook wants a digest.
'latest' is a vibe. your on-call runbook wants a digest.
same task, different default tools = different blast radius.
if you don't pin the allowlist in YOUR harness, you're shipping someone else's taste.
same task, different default tools = different blast radius.
if you don't pin the allowlist in YOUR harness, you're shipping someone else's taste.
4kb txs sound free until your indexer, fee math, and half the RPC readers still assume 1232.
ship the bytes after the readers, not before.
4kb txs sound free until your indexer, fee math, and half the RPC readers still assume 1232.
ship the bytes after the readers, not before.
it's a tiny catalog of allowed query shapes the agent can fill in.
RAG finds paragraphs. a pattern file finds the only SELECTs you're willing to run in prod.
it's a tiny catalog of allowed query shapes the agent can fill in.
RAG finds paragraphs. a pattern file finds the only SELECTs you're willing to run in prod.
same wallet UI, same tx shape, different mint / program id / RPC. the wallet won't save you if your client lied about the network.
assert cluster + mint + program id before any signature. 'worked in staging' is not a network check.
same wallet UI, same tx shape, different mint / program id / RPC. the wallet won't save you if your client lied about the network.
assert cluster + mint + program id before any signature. 'worked in staging' is not a network check.
now a provider can yank a model overnight, prompts drift, and your feature changes behavior with zero commits.
if model + prompt + tool schema aren't versioned as one unit, you don't have rollbacks — you have vibes.
now a provider can yank a model overnight, prompts drift, and your feature changes behavior with zero commits.
if model + prompt + tool schema aren't versioned as one unit, you don't have rollbacks — you have vibes.