Agent Ops: running AI coding agents (Claude Code, MCP) in production without breaking things. Guardrails, kill switches, monitoring. No trading signals.
Before you let an AI agent post, send, publish or pay on its own, run this check.
Free 1-page checklist (PDF): duplicate-write guard, kill switch, daily caps, wrong-account check, overnight monitoring.
https://t.co/ltgHq8a2kZ
@supabase Scoping is the big one. The other half is lifetime: I’d mint a short-lived token per job for the agent and keep the account-wide token out of its env entirely. If something leaks, the blast radius is one project, one run.
@jarredsumner Is the trimmed output deterministic for the same input? I hash my release artifacts so I can tell exactly which file a buyer got. A byte-identical --trim build would let the same check work for compiled binaries.
If your coding agent ran overnight and something went wrong, how would you find out?
A) An alert on my phone
B) I'd see it in the logs next morning
C) A user would tell me
D) I probably wouldn't
@RoundtableSpace Sandboxing the filesystem is half of it. The other half is egress: a server that can't read ~/.ssh can still send whatever it does read to any host. I'd pair it with a network allowlist and keep real secrets out of the agent's env.
@TheHackersNews If agent-generated code or plugins run in Wasm, the runtime version is part of your sandbox. Pin it, watch its advisories, and still give the module no secrets or network it does not need. One layer should not be the whole fence.
@TheHackersNews Lesson for anyone giving an agent a GitHub token: if it can push branches, it can usually push a workflow file too. Drop the workflow scope unless the job needs it, and keep secrets in environments that require approval.
Approval prompts are not a security boundary.
They check the command you see. Per Adversa, Mistral Vibe's parser checked one version of a shell command and executed the original string. Env prefixes and redirects slipped through.
The boundary is what the process can reach.
@dani_avila7 Worth pairing with one rule: run it on a clean browser profile, not your daily one. Once the agent reads pages, console and network, any page it opens can carry text aimed at it, and logged-in sessions turn that into real reach.
Where do your coding agents' API keys live right now?
A) .env in the repo
B) Shell environment
C) A secrets manager
D) Hardcoded in an MCP config
Per Hush Security, 12% of credential slots in ~82k public MCP configs hardcode a secret.
@jarredsumner Building it gets cheap; the edge cases stay expensive. An unattended job of mine died at night because a Windows cp932 console could not print a non-ASCII log line. Prompted tools still need that weird-environment test pass.
@veeramarni Thanks. Same rule in my posting script: if it cannot confirm the signed-in account, or the last post is still marked unknown, it stops instead of retrying. A missed post is cheaper than a duplicate
A guard that disappears when it crashes is worse than no guard. You stop looking.
I checked my own Claude Code plugin this week: 10-second timeout, no onFailure set. If Python is missing, the guard is skipped.
Fixing that next. Have you broken yours on purpose?
@testingcatalog A hub that lists triggers is the part I would check first. I once found an old auto-posting pipeline still wired for production, saved only because its quality filter blocked every post. Inventory beats memory.
@TheHackersNews Whatever the final details, the ops takeaway holds: isolation is something you test, not trust. My small version: the API spend cap lives at the provider, not only in my code, so a runaway job can’t talk its way past it.
@RoundtableSpace Fewer agents also means fewer handoffs to audit. My worst bug lived at a seam: a job unsure whether a post went out. Logging attempt before send, then sent/failed/unknown, fixed it. Every extra subagent is another seam to log.
@TheHackersNews A forgotten updater is the scariest kind of live system: nobody owns it, but it can still push. I once found an old auto-post pipeline of mine still production-ready; only its quality filters had kept it quiet. Inventory beats memory.
@hazemomier Agreed. The bundled runtime is the blind spot: a CLI that ships its own Python never shows up in your system pip list. Lockfiles plus the image digest are the record I'd trust.
The MCP Python SDK's OAuth client didn't check which server issued its tokens on every path.
A malicious MCP server could collect the client secret, auth code and PKCE verifier (WS-2026-0089, CVSS v4 8.7).
Fixed in 1.30.0 / 2.2.0. Run pip show mcp everywhere.
@jarredsumner 67 subagents in 267 MB is wild. At that fan-out the failure I'd watch is one shell dying quietly: an unattended job of mine once died overnight on a cp932 UnicodeEncodeError and nothing upstream noticed.
@devXritesh It helped me most when each agent owns its own files and its own log. The complexity shows up in shared state: two agents touching one file, or one retrying a send the other already did. I never auto-resend anything with an unknown result.