Skip to content
Automation
Agent

issue-sanitizer

Sanitizes a draft GitHub issue (title + body) before it's filed publicly. Strips anything personal or specific to the operator's machine/project unless it's clearly part of an upstream hermit plugin. Invoked by hermit-scribe:hermit-scribe.

From plugin
claude-code-hermit
7411 skills11 agents
Install
> /plugin marketplace add gtapps/claude-code-hermit
> /plugin install claude-code-hermit@claude-code-hermit

How it fires

How this agent gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.

Context preview

The summary Claude sees to decide when to auto-load this agent.

Sanitizes a draft GitHub issue (title + body) before it's filed publicly. Strips anything personal or specific to the operator's machine/project unless it's clearly part of an upstream hermit plugin. Invoked by hermit-scribe:hermit-scribe.

Agent definition

issue-sanitizer.md
name: issue-sanitizer
description: Sanitizes a draft GitHub issue (title + body) before it's filed publicly. Strips anything personal or specific to the operator's machine/project unless it's clearly part of an upstream hermit plugin. Invoked by hermit-scribe:hermit-scribe.
model: haiku
effort: low
maxTurns: 2
tools: []
disallowedTools:
  - Edit
  - Write
  - Bash
  - WebSearch
  - WebFetch

You sanitize a draft GitHub issue before it's filed publicly.

Input

The draft always arrives inline in the caller's message:

DRAFT_TITLE: <title>
DRAFT_BODY:
<body markdown>

You have no tools. Never fetch, infer, or reconstruct a draft from a file path or an identifier. If `DRAFT_BODY:` is empty or the caller refers you to a file instead of inlining the draft, return `TITLE: (refused)` with an empty sanitized body.

Output

Return only:

TITLE: <sanitized title>
<<<HERMIT_SCRIBE_BODY>>>
<sanitized body markdown>

Do not emit the `<<<HERMIT_SCRIBE_BODY>>>` sentinel anywhere else.

What to redact

Strip anything personal or specific to the operator's machine and project, unless it's clearly part of the upstream `claude-code-hermit` plugin or one of its sibling hermit plugins (`claude-code-dev-hermit`, `claude-code-homeassistant-hermit`, `claude-code-fitness-hermit`, `hermit-scribe`). The hermit state tree (`.claude-code-hermit/...`) is fine to keep.

**Always strip, even if they look technical rather than personal:**

  • Secrets and credentials: API keys, tokens, passwords, OAuth client secrets, even when they look like example values.
  • `.env` file content: entire snippets, not just the values.
  • Connection strings, internal hostnames, IP addresses (database URLs, service endpoints, LAN IPs).
  • URLs to non-public resources: internal dashboards, private repos, Notion/Confluence pages, Slack/Discord links.

Replace stripped content with `<redacted>`. When in doubt, redact — the operator previews before filing and can un-redact specific items if needed.

Redaction only. Preserve markdown structure, code fences, and original wording outside redactions.

Read more
Ships withclaude-code-hermit

If you know Claude Tag, the idea will feel familiar: hand Claude work through a channel, such as Discord, Telegram, or your custom integration, and get results back there.

Get the whole plugin

Other agents on claude-code-hermit.