シークレット管理
エージェントは、tai tool CLIを使用して実行時にユーザー設定済みのシークレットを読み取ることができます。
シークレットは保存時(AES-256-GCM)に暗号化され、読み取り時にのみ復号化されます。
利用可能なツール
| ツール | 説明 |
|---|---|
secret_list | シークレット名と説明を一覧表示(値は表示されません) |
secret_read | 名前を指定して単一のシークレット値を読み取ります |
使用方法
Bash
# 利用可能なシークレットを一覧表示
tai tool secret_list
# シークレットを読み取る
TOKEN=$(tai tool secret_read '{"name": "GITHUB_TOKEN"}' | jq -r '.value')
git clone "https://${TOKEN}@github.com/org/repo.git"
Node.js
const { execSync } = require("child_process");
function readSecret(name) {
const raw = execSync(
`tai tool secret_read '${JSON.stringify({ name })}'`,
{ encoding: "utf-8" }
);
return JSON.parse(raw).value;
}
const token = readSecret("GITHUB_TOKEN");
Python
import json
import subprocess
def read_secret(name: str) -> str:
result = subprocess.run(
["tai", "tool", "secret_read", json.dumps({"name": name})],
capture_output=True, text=True, check=True,
)
return json.loads(result.stdout)["value"]
token = read_secret("GITHUB_TOKEN")
PowerShell
function Read-Secret {
param([string]$Name)
$json = @{ name = $Name } | ConvertTo-Json -Compress
$result = tai tool secret_read $json | ConvertFrom-Json
return $result.value
}
$token = Read-Secret -Name "GITHUB_TOKEN"
セキュリティルール
- シークレット値を決して出力またはログ記録しない — シークレットをstdout、stderr、または任意のログファイルに書き込まないでください。
- シークレットをファイルに書き込まない — 例外:SSHキーは
chmod 600パーミッションで~/.ssh/に書き込むことができます。 - シークレットをLLMに送信しない — シークレット値は、プロンプト内容、システムメッセージ、モデルに転送されるツール呼び出し結果に含めてはなりません。
- スコープの分離 — シークレットはユーザーとエージェントごとにスコープが設定されます。エージェントは自分用に設定されたシークレットにのみアクセスできます。
- 監査証跡 — すべての
secret_read呼び出しは、呼び出し元の識別情報とともに監査証跡に記録されます。