Each sent message gets one Message-ID. Mint it before the first attempt and persist it with the send, so an agent retry cannot hand the provider a duplicate that no record reconciles. Failure test: kill the worker after provider acceptance but before the ack lands. #API#REST
Agent-written changes get a named debugger before merge, not whoever prompted them. Reviewers see the diff; the agent cannot say why a field is null in production, so a person owns the bug. Retire the rule once an agent's trace explains a bug unaided. #AI#devops
Which of twenty agents owns a failing test? Result rows carry pass/fail and a timestamp but no agent version, so failures get charged to the pipeline. Stamp agent version onto each result row as it is written. Rule of thumb: the row should name its agent. #AIAgents#Testing
Run the call: tool returns 200, four of six fields, nothing says why two are missing. Caller reads absent as empty, persists it, and the value is wrong two services downstream.
Check: absent = unknown or empty? Does the schema name the optional fields? #API#MCP
A hardware interrupt the platform never delivers passes every API contract and shows up as a crash on the device. Count interrupts received against expected, or the crash is your first observable. Platform owns delivery; you own the counter that proves it stopped.
Design review: nothing owns the write-ahead record of an agent action. A crash mid tool call leaves the step dispatched, not committed, so restart replays it. Retry is the trigger; the absent commit boundary is the cause. Log intent before execution. #AIAgents#DevOps
Before an agent gets execution rights, decide what its action log must capture. If a scan escalates via a tool the runbook never named, the pre-state of each touched resource is the only thing that lets you revert. Fail-test it by replaying a run whose final step errors.
Barge-in latency dropped once interruption handling left the model. Route it through the LLM and callers hear a reply they interrupted. Cancellation is transport: flush the TTS queue, cap the call. Per-hop ms budgets in review; a hop without one has no owner.
An overnight agent branch passed CI with the review queue behind it unclaimed. Unattended sessions produce diffs faster than anyone reads them, so failures surface in the queue days later. Give every long-running session a named reviewer and a stop condition.
Ask an incident reviewer which version each scheduled step ran under. Newer runtimes carry fixes and also move retry semantics and schedule offsets, so nothing throws until a job misses.
Checklist: pin versions; dry-run one cycle. #DevOps#CICD
Per-environment tokens look tidy until rotation: the old token stays valid until someone revokes it, and that revoke step lives in a runbook that drifts behind the deploy. One token with per-tool action checks avoids the drift but widens the blast radius. #AIAgents#DevOps
What does one working tree do when two agents edit it in the same minute? Last write wins, both report success, and the failure surfaces later in an unrelated test. Give each agent its own checkout; serialize writes behind one path. #AIagents#DevOps
Drafts ship; send rights stay off. Turn them on and the first bad reply lands in a client's thread before a human reads it.
Approval keeps blast radius small, caps throughput at review speed. That tradeoff belongs to whoever owns the send credential. #sre#devops
Idempotency keys, Retry-After and timeout budgets live outside the tool schema an agent reads. A flaky POST returns a vague error, the model infers cause, the retry duplicates the write. Check: idempotency key on writes, closed error enum. #API#Agents
A read-only task ran with write credentials; one recursive delete removed 48k files before any error surfaced. A dry run and a snapshot bound the blast radius. The rollback path needs a named owner before the credential is issued. #devops#platformengineering
Permission check on a tool call passes for the wrong reason: the agent's token is broader than the tool's contract. Prompt wording shapes intent; the credential decides scope. Put scopes in the gate, and treat every tool call as an authorization decision. #LLM#AIAgents
Egress control owns TCP. Nobody owns DNS. Deny a tool call and the agent resolves a TXT name on a public resolver. The allowlist covers TCP only, so no alert fired. Force DNS through one monitored resolver and block names not on the job's host list. #DNS#SRE
Client emails the agent directly, so a broken reply reaches them before it reaches your backlog. Can you replay a day of traffic against the current build? If not, quality is whoever tested last. After a bad send, you still need the log and a way to pull it back.
Run the same query twice through the MCP fanout and diff results. Dedupe belongs at the aggregator: duplicate postings across boards share no key, so a prompt tweak won't hold. I'd gate it on a collision-rate report and accept the recall loss until it stabilizes.
Scanner got disabled, a wrapper replaced it, and that wrapper now gates merges on a typed-decision model: calls return an enum, so unmodeled variants fail closed instead of being parsed as intent. If the dispatcher's else branch proceeds, the enum is decoration. #DevOps#SRE