Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add sodam-ai/SoDam-Harness-Eng/plugin install sodam-harnessWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/sodam-ai/sodam-harness-eng/undo)<a href="https://agentmods.dev/commands/sodam-ai/sodam-harness-eng/undo"><img src="https://agentmods.dev/badge/commands/sodam-ai/sodam-harness-eng/undo/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/sodam-ai/sodam-harness-eng/undo"><img src="https://agentmods.dev/badge/commands/sodam-ai/sodam-harness-eng/undo.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00031 | $0.01121 |
| Opus 5 | $0.00015 | $0.00561 |
| Sonnet 5 | $0.00006 | $0.00224 |
| Haiku 4.5 | $0.00003 | $0.00112 |
Grade A, and why
undo scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
사용자가 방금 한 위험 작업을 되돌리고 싶어 합니다. 절대 "가장 최근 백업"을 묻지도 않고 복구하지 마세요. 이 컴퓨터는 여러 작업이 동시에 백업을 만들 수 있어, "가장 최근"이 사용자가 방금 한 일이 아닐 수 있습니다(그대로 복구하면 엉뚱한 파일을 덮어쓰는 새 사고가 납니다). 반드시 아래 순서를 지키세요.
순서:
- 최근 백업 목록 보여주기: Bash로 실행
node "${CLAUDE_PLUGIN_ROOT}/hooks/backup.mjs" --list- 결과 배열을 쉬운 한국어 목록으로 보여줍니다(번호 · 얼마 전인지
ago(예: "3분 전") · 되돌릴 파일 이름files). 초보자는 "방금/3분 전"으로 고르기 쉬우니ago를 앞세우고, 절대 시각(created_at)은 보조로만. - 목록이 비어 있으면: "되돌릴 백업이 아직 없어요." 라고 알리고 멈춥니다.
- [중요] 사용자가 방금 잃은 파일이 이 목록에 안 보이면 바로 "없다"고 하지 마세요. 이 컴퓨터에 다른 작업이 동시에 백업을 만들고 있으면, 방금 만든 백업이 최근 몇 개 목록 밖으로 밀려나 있을 수 있습니다. 이럴 땐 그 파일이 있던 폴더를 지정해 더 넓은 범위에서 다시 찾습니다:
node "${CLAUDE_PLUGIN_ROOT}/hooks/backup.mjs" --list 8 "<잃어버린 파일이 있던 폴더 경로>"- 그래도 안 보이면 그때 "일치하는 백업을 못 찾았어요"라고 정직하게 알립니다(짐작으로 다른 백업을 권하지 않습니다).
- 결과 배열을 쉬운 한국어 목록으로 보여줍니다(번호 · 얼마 전인지
- 어느 것을 되돌릴지 정하기: 대화 맥락상 사용자가 방금 잃은(지운/덮어쓴) 파일과 일치하는 백업을 고릅니다.
- 어느 것인지 분명하지 않으면 목록을 보여주고 사용자가 직접 고르게 합니다(짐작으로 진행 금지).
- 복구 미리보기(매우 중요): 고른 백업 폴더(
dir)로 Bash 실행node "${CLAUDE_PLUGIN_ROOT}/hooks/backup.mjs" --plan "<백업폴더>"- 파일별
status를 쉬운 말로 설명합니다:recreate= 지금 없는 파일을 다시 만듦 (안전).overwrite= 지금 있는 파일을 백업 시점으로 덮어씀 → 지금 내용이 사라짐 (위험). 이게 하나라도 있으면 무엇이 덮어써지는지 분명히 경고하고, 사용자가 명시적으로 "그래도 진행"이라고 해야만 다음으로 갑니다.same= 동일(변화 없음),nobackup= 백업 파일이 없음.
- 파일별
- 확인 받기: "이 백업(시각 ○○)을 되돌릴까요?" 라고 물어 동의를 받습니다. (overwrite가 있으면 그 위험을 함께 고지)
- 복구 실행(동의 시): Bash로 실행
node "${CLAUDE_PLUGIN_ROOT}/hooks/backup.mjs" --restore "<백업폴더>"- 결과의
restored(복구 개수)와 복구된 파일의 절대 경로를 보여줍니다.overwritten목록이 있으면 어떤 파일을 덮어썼는지도 알립니다.failed목록이 있으면(예: 그 사이 폴더가 사라짐) 그 파일들은 못 되돌렸다고 정직하게 알리고,restored는 실제로 성공한 개수 그대로 보여줍니다(전체가 실패했다고 말하지 않습니다 — 일부는 이미 성공했을 수 있습니다).skipped목록이 있으면(백업 파일 자체가 없었던 경우, 3단계 미리보기의nobackup과 같은 파일들) 그 파일들도 되돌리지 못했다고 똑같이 정직하게 알립니다 —restored개수에만 의존해 "다 됐다"고 말하지 않습니다.
- 결과의
- 마무리: "되돌렸어요 ✅. 내용을 확인해 보세요." 라고 안내합니다.
주의:
--latest로 맹목 복구하지 마세요. 항상--list로 고르고--plan으로 확인한 뒤--restore "<폴더>"로 복구합니다.- 복구는 현재 파일을 백업 내용으로 덮어쓸 수 있습니다. 동의 없이 실행하지 마세요.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago Changed 6449e1165ce4
- 10d ago First seen · 32 lines · 31 tokens per session scan A b2830d72a475
undo is a command published in the GitHub repository sodam-ai/SoDam-Harness-Eng (4 stars, last pushed 8d ago), licensed Apache-2.0. It adds 31 tokens to every session and 1,121 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
start-issue
You are beginning work on GitHub issue $ARGUMENTS.
merge
Finish a PR properly: every check green, every review addressed — human and bot — then merge and clean up.
pr
Prepare and open a pull request the senior way: gate, template, scrubbed, everything visible.
release
The pre-tag controller: version sync, changelog, clean tree, gate, and suite — every failure listed, the tag printed, never run.
git
The pre-finish status: branch, hygiene findings, message checks, workflow lint, template state.
status
The state of play, computed fresh: branch, dirty files, the active sprint, open work, index freshness.