Skip to content
Agent Orchestration
Skill

/agent-harness-fault-injection

Use when an agent workflow needs deterministic recovery evidence for sandbox, MCP/tool, worker, checkpoint, memory, or orchestration failures.

From plugin
sickn33-agentic-awesome-skills-2
49k200 skills

Claude Code

$ npx -y skills add sickn33/agentic-awesome-skills --skill agent-harness-fault-injection --agent claude-code

SKILL.md

agent-harness-fault-injection.SKILL.md
name: agent-harness-fault-injection
description: "Use when an agent workflow needs deterministic recovery evidence for sandbox, MCP/tool, worker, checkpoint, memory, or orchestration failures."
category: development
risk: safe
source: self
source_type: self
date_added: "2026-08-19"
author: Whxuan0701
tags: [agent-harness, fault-injection, recovery, state-machine, mcp, multi-agent]
tools: [claude, cursor, gemini, codex-cli]

Agent Harness Fault Injection

Overview

Use a deterministic, non-production fault schedule to test whether an agent workflow preserves state, budgets, safety boundaries, and evidence when a dependency fails. The output is a small fault matrix, an event timeline, and a verdict that distinguishes recovered, contained, unrecoverable, and inconclusive runs.

When to Use This Skill

  • Use when a multi-step agent, state machine, loop, or multi-agent workflow has a new recovery path.
  • Use when sandbox execution, an MCP/tool call, a worker, a checkpoint store, or memory can time out or disappear.
  • Use before claiming retry, resume, deadline, isolation, or partial-failure behavior is production-ready.
  • Use when a regression needs reproducible failure evidence instead of a random chaos run.

Do not use this skill against a production target, real user data, live credentials, or an unbounded external service. Convert those cases to a local simulator or an authorized staging harness first.

Safety and Boundary Preconditions

1. Freeze the workflow revision, model/prompt configuration, tool schemas, seed, input fixture, timeout, retry budget, deadline, and expected terminal states. 2. Run in a disposable sandbox with synthetic inputs and stubbed tools. Keep network disabled unless the test explicitly needs a local test server. 3. Make every injected failure an in-memory or fixture-controlled event. Never delete real data, revoke real credentials, kill an unrelated process, or mutate a live service to create a failure. 4. Record the test scope and a run identifier before starting. A missing scope, fixture, or recovery contract makes the verdict `inconclusive`.

Recovery Contract

Write the invariant before injecting a fault. A useful contract names the state that must survive and the side effects that must not repeat:

After recovery, resume from the latest durable checkpoint, preserve the task
identity and safety policy, spend no more than the remaining retry/deadline
budget, and commit each externally visible effect at most once.

Model the workflow with explicit states. For example:

created -> running -> checkpointed -> waiting_for_tool
                       |                |
                       v                v
                    failed <--------- recovering -> resumed -> completed

For each transition, define the owner, durable fields, allowed retry count, and terminal behavior. In-memory values are not checkpoints unless the harness proves they survive the simulated restart.

Fault Matrix

Select the smallest set of faults that covers the new recovery logic. Do not randomize the schedule until a deterministic schedule has passed.

| Fault | Injection boundary | Required observation | Expected containment | |---|---|---|---| | sandbox denial | before a tool starts | no unsafe side effect; reason is retained | retry only when policy allows | | MCP/tool timeout | after request id is assigned | timeout is attributed to that request | bounded retry with same idempotency key | | worker restart | after checkpoint write | worker reloads the same task version | resume from latest checkpoint | | missing/stale checkpoint | before resume | stale data is rejected or marked | stop safely; never invent progress | | parallel branch failure | one branch after fan-out | sibling status is preserved | join policy decides retry, degrade, or stop | | memory loss | clear ephemeral context | durable facts are reconstructed | ask or stop when required facts are absent | | retry/deadline exhaustion | on the final attempt | no extra call is scheduled | terminal `failed` or `timed_out` |

Deterministic Injection Schedule

Use event numbers rather than wall-clock randomness. A schedule should be portable across harnesses:

{
  "seed": "harness-fixture-07",
  "faults": [
    {"event": "tool.call", "ordinal": 2, "kind": "timeout", "tool": "search"},
    {"event": "worker.start", "ordinal": 2, "kind": "restart"},
    {"event": "branch.join", "ordinal": 1, "kind": "partial_failure", "branch": "summarize"}
  ]
}

The harness should emit the schedule, not merely the seed. Keep fault identity separate from the observed error so a wrapper cannot accidentally turn a timeout into a generic failure. Run the same schedule twice and compare the normalized timeline before trying a different schedule.

Recovery Rules by Boundary

Sandbox and MCP/tool failures

  • Assign a request id and idempotency key before the call.
  • Distinguish timeout, explicit tool error, invalid output, and policy denial.
  • Retry only the declared retryable classes; preserve the original error and

attempt count in the evidence.

  • Do not retry a side effect unless the tool contract says the key is safe to

replay. A read timeout is not proof that a write did not happen.

  • When the deadline or retry budget is exhausted, emit one terminal event and

stop scheduling work.

Worker restart and checkpoints

  • Persist task id, workflow version, state name, completed effects, remaining

budgets, and the checkpoint sequence before a restart test.

  • Reload the newest valid checkpoint and reject a future-version or corrupted

checkpoint instead of guessing.

  • Verify that resumption does not replay a committed effect. If exactly-once

cannot be proven, downgrade the verdict and require reconciliation.

Parallel branches

Represent each branch as its own child attempt. The join record must retain success, failure, timeout, and not-started states.

Read more
@sickn33
Ships withsickn33-agentic-awesome-skills-2

Find reusable instructions for your project, inspect their complete files, and keep an exact skill set you can review and reuse.

Stars on GitHub

Momentum

stars in total
48.9k
Star history of sickn33/agentic-awesome-skills on GitHub, a chart by star-history.com

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

clawdis10d393k
@steipete@steipeteInstall Skill
computer-use

computer-use

Drives the GUI of a visible local app window through `orca computer`: accessibility tree, clicks, typing, menus, dialogs, and…

orca10d111k
@stablyai@stablyaiInstall Skill
agentmail

agentmail

Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…

paperclip10d109k
@paperclipai@paperclipaiInstall Skill
adr-create

adr-create

Create a new Architecture Decision Record with sequential numbering and AgentDB registration

@ruvnet@ruvnetInstall Skill

Questions about agent-harness-fault-injection.

Which coding agents can use agent-harness-fault-injection?
agent-harness-fault-injection installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.