Skip to content

Claude Code on the Webでghコマンドを使う

Claude Code on the Web の仕様は2026年1月8日時点です。今後ghコマンドがデフォルトでインストールされるといくつかの設定が不要になります。

2026/1/10

ghコマンドが設定できるリポジトリを公開しました。リポジトリに記載したのカスタム設定と、以下のHooksを追加することで実行できます

settings.json
{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bun x gh-setup-hooks",
            "timeout": 120
          }
        ]
      }
    ]
  }
}
GitHub - oikon48/gh-setup-hooks: Enable `gh` command in Claude Code on the Web environment, just adding SessionStartHooks
Enable `gh` command in Claude Code on the Web environment, just adding SessionStartHooks - oikon48/gh-setup-hooks
github.com

Oikonです。普段はAIツール、特にClaude Codeで遊んでいます。

以前、Claude Code on the Webの仕様を徹底解剖という記事を書きました。その中でghコマンドが禁止されていることを紹介しましたが、最近の仕様変更でghdisallowed_toolsから削除され、使えるようになりました。

今回は、Claude Code on the Webでghを使えるようにする設定を紹介します。

Claude Code on the Webとは

Claude Code on the Webは、ブラウザ上でClaude Codeを実行できる環境です。

https://claude.com/code
claude.com

手元にPCがなくてもブラウザさえあれば開発できることが魅力です。GitHubリポジトリをcloneして、Sandbox環境内でClaude Codeを動かす仕組みになっています。詳しい仕様は前回の記事をご覧ください:

Claude Code on the Webの仕様を徹底解剖
zenn.dev

ちなみに余談ですが、Claude Codeのプロンプトの先頭に&をつけるとローカルのClaude Codeからon the Webにタスクを送れます。

ghコマンドの禁止解除

以前のClaude Code on the Webでは、ghコマンドが明確に禁止されていました。起動時のオプションで--disallowed-tools Bash(gh:*)が設定されており、システムプロンプトにも以下の記述がありました:

The GitHub CLI (gh) is not available in this environment.

つまり、PRの作成やissueの操作といったGitHub CLIを使った操作は一切できませんでした

しかし、後日(2025年12月17日)で確認したところ、disallowed_toolsからghが削除されていました

startup.jsonの差分

上記の画像はdata/startup.jsonの差分です。"disallowed_tools": ["Bash(gh:*)"]が削除されているのがわかります。これにより、ghコマンド自体は禁止ではなくなりました。ただし、デフォルトではghはインストールされていないため、そのままでは使えません。

has gh

ghを使うための条件

ghを使うには以下の2つが必要です:

  1. カスタム環境でGITHUB_TOKENを設定する
  2. ghをインストールする

カスタム環境の設定

Claude Code on the Webでは、カスタム環境を使って環境変数を設定できます。

カスタム環境の設定画面

カスタム環境で.env形式のGITHUB_TOKENを設定することで、ghコマンドの認証に必要なトークンを渡すことができます。ネットワークアクセスは”Full”ならば特に設定の必要はなし、“カスタム”であればインストール元(今回のScriptの場合は、release-assets.githubusercontent.com)を追加します。

sessionStartHooksでghをインストール

GITHUB_TOKENが設定されている環境でghコマンドをインストールすれば、ghが使えます。Claude Codeに明示的に頼むこともできますが、sessionStartHooksを使えば自動でインストールできます。

リポジトリ内に以下のような.claude/hooks/gh-setup.shを作成します:

gh-setup.sh
gh-setup.sh
#!/bin/bash
# This is sample script, and you should verify your own.
# SessionStart hook: GitHub CLI auto-installation for remote environments
# This script installs gh CLI when running in Claude Code on the Web
# following best practices: idempotent, fail-safe, proper logging

set -e

LOG_PREFIX="[gh-setup]"

log() {
    echo "$LOG_PREFIX $1" >&2
}

# Only run in remote Claude Code environment
if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then
    log "Not a remote session, skipping gh setup"
    exit 0
fi

log "Remote session detected, checking gh CLI..."

# Check if gh is already available
if command -v gh &>/dev/null; then
    log "gh CLI already available: $(gh --version | head -1)"
    exit 0
fi

# Setup local bin directory
LOCAL_BIN="$HOME/.local/bin"
mkdir -p "$LOCAL_BIN"

# Check if gh exists in local bin
if [ -x "$LOCAL_BIN/gh" ]; then
    log "gh found in $LOCAL_BIN"
    # Ensure PATH includes local bin
    if [[ ":$PATH:" != *":$LOCAL_BIN:"* ]]; then
        export PATH="$LOCAL_BIN:$PATH"
        # Persist to CLAUDE_ENV_FILE if available
        if [ -n "$CLAUDE_ENV_FILE" ]; then
            echo "export PATH=\"$LOCAL_BIN:\$PATH\"" >> "$CLAUDE_ENV_FILE"
            log "PATH updated in CLAUDE_ENV_FILE"
        fi
    fi
    exit 0
fi

log "Installing gh CLI to $LOCAL_BIN..."

# Create temp directory for installation
TEMP_DIR=$(mktemp -d)
trap "rm -rf $TEMP_DIR" EXIT

# Detect architecture
ARCH=$(uname -m)
case "$ARCH" in
    x86_64)
        GH_ARCH="amd64"
        ;;
    aarch64|arm64)
        GH_ARCH="arm64"
        ;;
    *)
        log "Unsupported architecture: $ARCH"
        exit 0  # Fail-safe: exit 0 even on failure
        ;;
esac

# Download and install gh CLI
GH_VERSION="2.62.0"
GH_TARBALL="gh_${GH_VERSION}_linux_${GH_ARCH}.tar.gz"
GH_URL="https://github.com/cli/cli/releases/download/v${GH_VERSION}/${GH_TARBALL}"

log "Downloading gh v${GH_VERSION} for ${GH_ARCH}..."

if ! curl -sL "$GH_URL" -o "$TEMP_DIR/$GH_TARBALL"; then
    log "Failed to download gh CLI"
    exit 0  # Fail-safe
fi

log "Extracting..."
if ! tar -xzf "$TEMP_DIR/$GH_TARBALL" -C "$TEMP_DIR"; then
    log "Failed to extract gh CLI"
    exit 0  # Fail-safe
fi

# Move binary to local bin
if ! mv "$TEMP_DIR/gh_${GH_VERSION}_linux_${GH_ARCH}/bin/gh" "$LOCAL_BIN/gh"; then
    log "Failed to install gh CLI"
    exit 0  # Fail-safe
fi

chmod +x "$LOCAL_BIN/gh"

# Update PATH
export PATH="$LOCAL_BIN:$PATH"

# Persist PATH to CLAUDE_ENV_FILE if available
if [ -n "$CLAUDE_ENV_FILE" ]; then
    echo "export PATH=\"$LOCAL_BIN:\$PATH\"" >> "$CLAUDE_ENV_FILE"
    log "PATH persisted to CLAUDE_ENV_FILE"
fi

log "gh CLI installed successfully: $($LOCAL_BIN/gh --version | head -1)"
exit 0

.claude/settings.jsonに上記のHooksの設定を追加します:

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "./.claude/hooks/gh-setup.sh"
          }
        ]
      }
    ]
  }
}

CLAUDE_CODE_REMOTEはClaude Code on the Webの環境でのみtrueに設定される環境変数です。これにより、ローカル環境では実行をスキップし、on the Web環境でのみghをインストールします。今回はghコマンドのインストールに使いましたが、他のリモートのみで実行したいケースでも使えると思います。

if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then
    log "Not a remote session, skipping gh setup"
    exit 0
fi

またCLAUDE_ENV_FILEはClaude Codeが提供する環境変数ファイルのパスです。ここに書き込むことで、セッション中のPATH設定を永続化できます。

if [ -n "$CLAUDE_ENV_FILE" ]; then
    echo "export PATH=\"$LOCAL_BIN:\$PATH\"" >> "$CLAUDE_ENV_FILE"
    log "PATH persisted to CLAUDE_ENV_FILE"
fi

上記の設定がされているリポジトリにPushして、Claude Code on the Webでそのリポジトリを開けば、セッション開始時に自動でghがインストールされます。ghがインストールされている場合はスキップします。

注意点としてはサンドボックスのプロキシの設定の関係で、ghコマンドを使う場合は -R owner/repo フラグが必要です。この辺りはClaude Codeがよしなにやってくれたりしますが、CLAUDE.mdに一言書いておくとスムーズです。

これにより、Claude Code on the Web上でPRの作成やissueの操作が可能になります。

has gh

ちなみに今回紹介したスクリプトを使った設定をGitHubで公開しました。

リポジトリに記載したのカスタム設定と、以下のHooksを追加することで実行できます

settings.json
{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bun x gh-setup-hooks",
            "timeout": 120
          }
        ]
      }
    ]
  }
}
GitHub - oikon48/gh-setup-hooks: Enable `gh` command in Claude Code on the Web environment, just adding SessionStartHooks
Enable `gh` command in Claude Code on the Web environment, just adding SessionStartHooks - oikon48/gh-setup-hooks
github.com

まとめ

今回は、Claude Code on the WebでGitHub CLI(gh)を使えるようにする方法を紹介しました。

  • 2025年12月17日頃にdisallowed_toolsからghが削除された
  • カスタム環境でGITHUB_TOKENを設定する
  • sessionStartHooksでghを自動インストールするスクリプトを設定
  • CLAUDE_CODE_REMOTEでon the Web環境を判定できる

ghが使えるようになったことで、Claude Code on the Web上でissueを読んでタスクを実行などができます。また、CLAUDE_CODE_REMOTEを使えば他のリモートのみのワークフローにも使えると思います。この記事が参考になれば幸いです。

GitHub - oikon48/gh-setup-hooks: Enable `gh` command in Claude Code on the Web environment, just adding SessionStartHooks
Enable `gh` command in Claude Code on the Web environment, just adding SessionStartHooks - oikon48/gh-setup-hooks
github.com

Xフォローしてくれると嬉しいです

Xでも情報発信しているので、フォローしていただけると励みになります!

Oikon (@oikon48) on X
Software Engineer / 海外とソフトウェア開発してます🌎 / RevenueCat Shipaton 2025 Winner / ✳︎ultrathink… / Claude Code の解説してます / Work requests via DM
x.com

参考文献

Claude Code on the web - Claude Code Docs
Run Claude Code tasks asynchronously on secure cloud infrastructure
docs.claude.com
Hooks reference - Claude Code Docs
Reference for Claude Code hook events, configuration schema, JSON input/output formats, exit codes, async hooks, prompt hooks, and MCP tool hooks.
docs.claude.com
Claude Code on the Webの仕様を徹底解剖
zenn.dev
個人用アクセス トークンを管理する - GitHub ドキュメント
コマンド ラインまたは API を使用して GitHub への認証を行うときに、パスワードの代わりに personal access token を使用することができます。
docs.github.com