GitHub Copilot Integration Guide¶
This guide explains how to integrate AI Guardian with GitHub Copilot using its hook system.
Overview¶
AI Guardian integrates with GitHub Copilot through native hooks that intercept prompts and tool usage before they're sent to the AI. This provides real-time protection by scanning for secrets and enforcing security policies during AI interactions.
Protection Levels¶
✅ Real-time scanning:
- Scans user prompts before submission (userPromptSubmitted hook)
- Scans tool inputs before execution (preToolUse hook)
- Blocks operations containing secrets or accessing denied directories
- Enforces MCP/Skill permissions
Prerequisites¶
Required¶
- GitHub Copilot - Installed and activated
- GitHub Copilot subscription (Individual, Business, or Enterprise)
- VS Code with GitHub Copilot extension, or
-
GitHub Copilot CLI
-
Gitleaks - Secret scanning engine
-
AI Guardian - Installed via uv or pip
Installation¶
Method 1: Automatic Setup (Recommended)¶
Use the ai-guardian setup command:
# Auto-detect and setup GitHub Copilot hooks
ai-guardian setup --ide copilot
# Or with confirmation prompt
ai-guardian setup --ide copilot --yes
The setup command will:
1. Detect your GitHub Copilot configuration
2. Add ai-guardian hooks to ~/.github/hooks/hooks.json
3. Create a backup of your existing configuration
4. Merge with any existing hooks
Method 2: Manual Setup¶
Step 1: Locate GitHub Copilot hooks configuration
The hooks configuration file is typically at:
Step 2: Create or edit hooks.json
If the file doesn't exist, create it:
mkdir -p ~/.github/hooks
cat > ~/.github/hooks/hooks.json << 'EOF'
{
"userPromptSubmitted": [
{
"command": "ai-guardian"
}
],
"preToolUse": [
{
"command": "ai-guardian"
}
]
}
EOF
If the file exists, merge the hooks:
{
"userPromptSubmitted": [
{
"command": "ai-guardian"
}
],
"preToolUse": [
{
"command": "ai-guardian"
}
]
}
Step 3: Verify installation
Test that ai-guardian is accessible:
Configuration¶
Hook Configuration¶
GitHub Copilot hooks are configured in ~/.github/hooks/hooks.json:
{
"userPromptSubmitted": [
{
"command": "ai-guardian",
"description": "Scan prompts for secrets before submission"
}
],
"preToolUse": [
{
"command": "ai-guardian",
"description": "Check tool permissions and scan inputs"
}
]
}
Available Hooks¶
GitHub Copilot supports these hooks:
| Hook | Purpose | AI Guardian Support |
|---|---|---|
userPromptSubmitted |
Before sending prompt to AI | ✅ Supported |
preToolUse |
Before tool execution | ✅ Supported |
postToolUse |
After tool execution | ⏭️ Future |
AI Guardian Configuration¶
Configure ai-guardian behavior in ~/.config/ai-guardian/ai-guardian.json:
{
"tool_policy": {
"default_action": "allow",
"rules": [
{
"tool_pattern": "mcp__*",
"action": "block",
"reason": "MCP servers require explicit approval"
}
]
},
"prompt_injection": {
"enabled": true,
"confidence_threshold": 0.8
}
}
See Configuration Guide for details.
Usage¶
Once installed, AI Guardian runs automatically:
Normal Operation¶
When you use GitHub Copilot:
- Type a prompt: AI Guardian scans for secrets
- Copilot suggests code: AI Guardian checks tool usage
- Clean content: Request proceeds normally
- Secrets detected: Request blocked with error message
Example: Blocked Request¶
User prompt: "Deploy using API key: sk_live_abc123..."
🛡️ Secret Detected
Protection: Secret Scanning
Secret Type: stripe-api-key
Location: prompt:line 1
Scanner: Gitleaks
Pattern source: Default Gitleaks rules
Why blocked: Hard-coded secrets in prompts create security risks.
Secrets should never be included in AI prompts or source code.
This operation has been blocked for security.
DO NOT attempt to bypass this protection - it prevents credential leaks.
Recommendation:
- Store secrets in environment variables or secret managers
- Use placeholder values in examples (e.g., "sk_test_example_key")
- Never paste real API keys, tokens, or passwords
⚠️ Secret value NOT shown in this message for security
Config: ~/.config/ai-guardian/ai-guardian.json
Section: secret_scanning.enabled
Example: Allowed Request¶
User prompt: "Refactor this function for better readability"
✓ No secrets detected
✓ Request allowed
Response Format¶
GitHub Copilot expects specific JSON responses:
userPromptSubmitted Hook¶
Input from Copilot:
{
"timestamp": 1704614400000,
"cwd": "/path/to/project",
"prompt": "User's prompt text",
"source": "user"
}
AI Guardian Response (exit code only): - Exit code 0: Allow prompt - Exit code 2: Block prompt (with error message on stderr)
preToolUse Hook¶
Input from Copilot:
{
"timestamp": 1704614600000,
"cwd": "/path/to/project",
"toolName": "bash",
"toolArgs": "{\"command\":\"npm test\",\"description\":\"Run tests\"}"
}
AI Guardian Response (JSON):
Or when blocked:
Environment Variables¶
AI_GUARDIAN_IDE_TYPE¶
Override IDE detection:
Or:
Troubleshooting¶
Hooks Not Running¶
Problem: AI Guardian doesn't seem to be blocking anything
Solutions:
1. Verify hooks.json exists: cat ~/.github/hooks/hooks.json
2. Check ai-guardian is in PATH: which ai-guardian
3. Test manually:
Permission Errors¶
Problem: Permission denied when running ai-guardian
Solution: Ensure ai-guardian is executable:
JSON Parse Errors¶
Problem: Failed to parse hook input
Solution: GitHub Copilot might be sending unexpected format. Enable debug logging:
Then check stderr output for details.
Gitleaks Not Found¶
Problem: gitleaks: command not found
Solution: Install gitleaks (see Prerequisites)
False Positives¶
Problem: Legitimate content flagged as secrets
Solutions:
1. Add allowlist rules to .gitleaks.toml in your project
2. Use gitleaks:allow comment in code
3. Adjust pattern server configuration (if using)
Performance Issues¶
Problem: AI Guardian slows down Copilot responses
Solution: This is expected for security scanning. To optimize:
1. Use project-specific .gitleaks.toml with focused rules
2. Disable prompt injection detection if not needed
3. Use in-memory temp files (automatic on Linux with /dev/shm)
Security Considerations¶
What AI Guardian Protects Against¶
✅ Secrets in prompts: - API keys, tokens, passwords - Private keys (SSH, PGP, RSA) - Cloud credentials (AWS, GCP, Azure) - Database connection strings
✅ Directory blocking:
- Files in directories with .ai-read-deny markers
- Prevents access to sensitive codebases
✅ Tool permissions: - MCP server usage - Skill execution - Custom tool policies
What AI Guardian Does NOT Protect Against¶
❌ Secrets already in code (use separate static analysis) ❌ Secrets in git history (use git-secrets or TruffleHog) ❌ Network exfiltration (use network policies) ❌ Malicious tool installation (use code review)
Defense in Depth¶
Recommended layers: 1. AI Guardian hooks - Real-time prompt/tool scanning 2. Git pre-commit hooks - Commit-time verification 3. CI/CD scanning - Build-time secret detection 4. Secret rotation - Regular credential updates 5. Monitoring - Detect unusual AI usage patterns
Advanced Configuration¶
Custom Secret Patterns¶
Create .gitleaks.toml in your project:
title = "Custom Secret Rules"
[[rules]]
id = "company-api-key"
description = "Company API Key"
regex = '''company-api-[a-zA-Z0-9]{32}'''
tags = ["api", "company"]
Tool Policy Rules¶
Configure MCP/Skill permissions in ~/.config/ai-guardian/ai-guardian.json:
{
"tool_policy": {
"default_action": "allow",
"rules": [
{
"tool_pattern": "mcp__database__*",
"action": "block",
"reason": "Database operations require manual approval"
},
{
"tool_pattern": "Bash",
"allowed_commands": ["ls", "cat", "grep"],
"action": "conditional"
}
]
}
}
Prompt Injection Detection¶
Enable advanced prompt injection detection:
Note: Specific attack pattern examples are not included for security reasons. See the main README FAQ for guidance on researching prompt injection safely.
{
"prompt_injection": {
"enabled": true,
"confidence_threshold": 0.8,
"methods": ["heuristic", "vector"],
"custom_patterns": [
"company_specific_pattern_.*"
]
}
}
Enterprise Deployment¶
Centralized Configuration¶
Use remote configuration for team-wide policies:
Remote config example:
{
"tool_policy": {
"default_action": "block",
"rules": [
{
"tool_pattern": "Bash",
"action": "allow",
"allowed_commands": ["git", "npm", "make"]
}
]
},
"allowed_directories": [
"/projects/public/*"
],
"blocked_directories": [
"/projects/secrets/*",
"/projects/private/*"
]
}
Monitoring and Compliance¶
Track ai-guardian usage for compliance:
- Enable audit logging (if available in your GitHub Copilot plan)
- Monitor blocked requests via stderr logs
- Review patterns to identify training needs
- Adjust policies based on usage patterns
Comparison: Copilot vs Other IDEs¶
| Feature | GitHub Copilot | Claude Code | Cursor |
|---|---|---|---|
| Hook Type | Native hooks | Native hooks | Native hooks |
| Trigger Point | Prompt + Tool | Prompt + Tool | Prompt + Tool |
| Response Format | JSON (tools), Exit code (prompts) | Exit codes | JSON |
| Setup Complexity | Medium | Low | Low |
| Permission Levels | allow/deny | allow/block | allow/deny |
Resources¶
- GitHub Copilot Documentation
- GitHub Copilot Hooks Documentation
- AI Guardian Configuration
- Gitleaks Configuration
Getting Help¶
Issues with ai-guardian: - GitHub Issues: https://github.com/RedHatProductSecurity/ai-guardian/issues
Issues with GitHub Copilot: - GitHub Support: https://support.github.com/
Security concerns:
- Open an issue with [SECURITY] prefix