Gh CLI banner
Trail of Bits Trail of Bits

Gh CLI

Development community Advanced

Description

A Claude Code plugin that intercepts GitHub URL fetches and redirects Claude to use the authenticated `gh` CLI instead.

Installation

Installs to ~/.claude/skills/gh-cli/

Terminal
git clone --depth 1 https://github.com/trailofbits/skills /tmp/skills \ && mkdir -p ~/.claude/skills \ && cp -r /tmp/skills/plugins/gh-cli ~/.claude/skills/gh-cli

Clones the whole repository, because a skill folder can carry scripts and resources beside its SKILL.md.

Repository README

This is the README for trailofbits/skills, shared by 13 entries in this directory. It describes the repository, not this entry specifically.

gh-cli

A Claude Code plugin that intercepts GitHub URL fetches and redirects Claude to use the authenticated `gh` CLI instead.

Problem

Claude Code's `WebFetch` tool and Bash `curl`/`wget` commands don't use the user's GitHub authentication. This means:

  • Private repos: Fetches fail with 404 errors
  • Rate limits: Unauthenticated requests are limited to 60/hour (vs 5,000/hour authenticated)
  • Missing data: Some API responses are incomplete without authentication

Solution

This plugin provides:

  1. PreToolUse hooks that intercept GitHub URL access via WebFetch or curl/wget, and suggest the correct gh CLI command
  2. A gh PATH shim that blocks anti-patterns: API /contents/ fetching and non-session-scoped temp directory clones
  3. A SessionEnd hook that automatically cleans up cloned repositories when the session ends

What Gets Intercepted

Tool Pattern Suggestion
WebFetch github.com/{owner}/{repo} gh repo view owner/repo
WebFetch github.com/.../blob/... gh repo clone + Read
WebFetch github.com/.../tree/... gh repo clone + Read/Glob/Grep
WebFetch api.github.com/repos/.../pulls gh pr list / gh pr view
WebFetch api.github.com/repos/.../issues gh issue list / gh issue view
WebFetch api.github.com/... gh api
WebFetch raw.githubusercontent.com/... gh repo clone + Read
Bash curl https://api.github.com/... gh api
Bash curl https://raw.githubusercontent.com/... gh repo clone + Read
Bash wget https://github.com/... gh release download
Bash (shim) gh api repos/.../contents/... gh repo clone + Read
Bash (shim) gh repo clone ... /tmp/... (non-session-scoped) Session-scoped clone path

What Passes Through

...