Back to Skills

secrets-guard

verified

Claude Codeで秘密情報を安全に管理するための多層防御アプローチガイド。APIトークン、DB認証情報、SSH鍵などを保護する3層防御戦略(物理的分離 + deny設定 + PreToolUse Hook)。

View on GitHub

Marketplace

ai-agent-setup

sk8metalme/ai-agent-setup

Plugin

development-toolkit

Repository

sk8metalme/ai-agent-setup
1stars

plugins/development-toolkit/skills/secrets-guard/SKILL.md

Last Verified

January 25, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/sk8metalme/ai-agent-setup/blob/main/plugins/development-toolkit/skills/secrets-guard/SKILL.md -a claude-code --skill secrets-guard

Installation paths:

Claude
.claude/skills/secrets-guard/
Powered by add-skill CLI

Instructions

# 秘密情報管理(Secrets Guard)

Claude Codeで秘密情報を安全に管理するための多層防御アプローチガイド。

---

## 概要

Claude Codeは強力な開発支援ツールですが、秘密情報(APIトークン、データベース認証情報、SSH鍵など)の取り扱いには注意が必要です。本スキルでは、**3層の防御層(L1-L3)**を組み合わせた包括的なアプローチで秘密情報を保護します。

### 既知の問題点

| 問題 | 詳細 |
|------|------|
| **自動読み込み** | Claude Codeは`.env`, `.env.local`などを自動的にメモリに読み込む可能性がある |
| **deny設定のバグ** | `settings.json`の`deny`設定が完全に機能しないバグ([Issue #6631](https://github.com/anthropics/claude-code/issues/6631), [#6699](https://github.com/anthropics/claude-code/issues/6699)) |
| **間接的な漏洩** | system reminderなど間接的な方法で内容が漏洩する可能性がある |

---

## 多層防御アプローチ

### レベル1: 物理的な分離(最も確実)

**原則**: 秘密情報はClaude Codeがアクセスできない場所に置く

#### セットアップ手順

```bash
# 1. ~/.secrets/ ディレクトリを作成
mkdir -p ~/.secrets
chmod 700 ~/.secrets

# 2. プロジェクト用ディレクトリを作成
mkdir -p ~/.secrets/my-project

# 3. .envファイルを移動(シンボリックリンクは作成しない)
mv .env ~/.secrets/my-project/.env

# 4. テンプレートから作成する場合
cp global/templates/secrets/.env.example ~/.secrets/my-project/.env
vi ~/.secrets/my-project/.env
```

#### 実行時の読み込み

**方法A: sourceコマンド**

```bash
# プロジェクトディレクトリで実行
set -a
source ~/.secrets/my-project/.env
set +a
npm run dev
```

**方法B: シェル関数(推奨)**

`~/.bashrc` または `~/.zshrc` に追加:

```bash
load_project_env() {
    local project_name="${1:-$(basename $(pwd))}"
    local env_file="$HOME/.secrets/${project_name}/.env"

    if [[ -f "$env_file" ]]; then
        set -a
        source "$env_file"
        set +a
        echo "✅ Loaded: $env_file"
    else
        echo "⚠️  Not found: $env_file"
    fi
}
alias lenv='load_project_env'
```

使用例:

```bash
cd ~/projects/my-project
lenv  # ~/.secrets/my-project/.env を読み込み
```

---

### レベル2: deny設定(追加の防御層)

`~/.claude/settings.json` のdenied配列に秘密情報パターンを追加。

#### テンプレート使用

```bash
# テンプレートを確認
cat global/templates/secrets/settings-deny-secrets.json

# 手動で ~/.claude/settings.json の "permissions.denied" に追加
```

#### 設定例

```json
{
  "permissions": {
    "denied": [
      "Read(~/.secrets/*)",
      "Read(**/.env)",
      "Read(**/.env.*)",
      "Read(**/credentials.js

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
5352 chars