Skip to content
View justin-rhee's full-sized avatar

Highlights

  • Pro

Block or report justin-rhee

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
justin-rhee/README.md

Justin Rhee

Hi, I'm a designer building agent harnesses with OpenClaw and Claude Code.

Here are a few small tools I've built to make building with agents easier. Sharing what's helped me, in case it helps you build something too:

Keeping an agent inside the lines

  • bash-havoc-guard. Reads every shell command your agent is about to run and stops the dangerous ones.
  • path-fence. Resolves a path all the way down first, then refuses the credential-shaped ones.
  • untrusted-read. Makes an agent treat a notes directory as data instead of instructions.
  • transcript-redactor. Redacts shell output before your agent's transcript records it.

Checking that the work actually happened

  • attest-check. Fails an agent's answer if anything you asked about went unmentioned.
  • anchor-check. Catches plans that point at code that doesn't exist.
  • linter-selftest. A linter that proves its own rules can still fire.
  • scar-audit. Tells you which of the rules you wrote for your agent are actually being followed.

Not losing work

  • never-worse-backup. A git auto-backup that stops before it can lose your work or push a secret.
  • cas-write. Compare-and-swap file writes, so a second writer can't silently erase the first.
  • guarded-deploy. Ships only from a clean tree, on the exact commit your checks passed.

Signals that tell the truth

  • alert-throttle. Stops a stuck check from posting the same alert forever.
  • alert-redactor. Builds alerts that carry the shape of a failure and none of its content.
  • freshness-gate. Says whether a signal is fresh, stale, or dead, from its real timestamp.

Not hitting a usage limit mid task

  • openclaw-spillway. Moves an OpenClaw agent onto a backup lane before a usage window runs out, instead of after requests start failing.
  • headroom. Puts your Claude usage windows and OpenRouter spend in the macOS menu bar, so checking is one glance instead of two logins.

Catching things before they ship

  • bash32-check. Blocks the shell lines it can prove will kill your script partway through.
  • deid-allowlist. Drops every field you didn't explicitly allow, before a record leaves your machine.
  • inert-css. Finds the CSS rules that are valid, present, and quietly lose to another rule further down the file.

Each one is small, tested offline, and clear about its limits. The README includes the ways I've found to break it so far.

What I learned building them is in LESSONS.md.

Tell me what I've missed

If you spot a gap, or something just looks off, open an issue. I'd be grateful.

Pinned Loading

  1. bash-havoc-guard bash-havoc-guard Public

    A Claude Code hook that stops an AI agent from leaking secrets or destroying files

    Shell

  2. linter-selftest linter-selftest Public

    A linter that proves its own rules can actually fire

    Python

  3. untrusted-read untrusted-read Public

    Makes your agent treat a notes directory as data instead of instructions

    Python

  4. scar-audit scar-audit Public

    Finds out which of the rules you wrote for your agent are actually being followed

    Shell

  5. openclaw-spillway openclaw-spillway Public

    Quota-aware failover for OpenClaw that spills work to a backup lane before a usage window runs out

    TypeScript

  6. inert-css inert-css Public

    Finds CSS declarations that are present, valid, and can never take effect

    JavaScript