mcpField
C
claude-code-headless

claude-code-headless

github.com/0xdarkmatterAgent workflows7844 installsUpdated 2w ago
Repository

About claude-code-headless

claude-code-headless is a skill for running Claude Code non-interactively from scripts. It covers structured output, session continuation, tool permissions, and CI/CD use.

Key features

  1. 01Non-interactive CLI execution
  2. 02Text, JSON, and stream-JSON output
  3. 03Resume or continue sessions
  4. 04Allow or deny selected tools
  5. 05Configure permission modes

Use cases

  1. 01Automate code analysis in scripts
  2. 02Parse responses in CI/CD jobs
  3. 03Run multi-turn tasks by session ID

MCP support

The skill documents the `--mcp-config` option for specifying an MCP server configuration file.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/0xdarkmatter/claude-mods --skill claude-code-headless

After installing, type/claude-code-headlessin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

assets/
.gitkeep
references/
output-formats.md
integration-patterns.md
cli-options.md
scripts/
.gitkeep

Details

From the project README

Claude Code Headless Mode

Run Claude Code from scripts without interactive UI.

Quick Start

# Basic headless execution
claude -p "Explain this code" --allowedTools "Read,Grep"

# JSON output for parsing
claude -p "List files" --output-format json

# Continue conversation
claude -p "Start analysis" --output-format json > result.json
session=$(jq -r '.session_id' result.json)
claude --resume "$session" "Now fix the issues"

Essential CLI Options

FlagDescription
-p, --printNon-interactive (headless) mode
--output-formattext, json, stream-json
-r, --resumeResume by session ID
-c, --continueContinue most recent session
--allowedToolsComma-separated allowed tools
--disallowedToolsComma-separated denied tools
--mcp-configPath to MCP server config JSON
--verboseEnable verbose logging
--append-system-promptAdd to system prompt

Permission Modes

ModeFlagEffect
Default(none)Prompt for permissions
Accept edits--permission-mode acceptEditsAuto-accept file changes
Bypass--permission-mode bypassPermissionsSkip all prompts

Output Formats

Text (default)
claude -p "Hello"
# Outputs: Human-readable response
JSON
claude -p "Hello" --output-format json
{
  "type": "result",
  "subtype": "success",
  "result": "Hello! How can I help?",
  "session_id": "abc123",
  "total_cost_usd": 0.001,
  "duration_ms": 1234,
  "num_turns": 1
}
Stream-JSON
claude -p "Hello" --output-format stream-json
# Real-time JSONL output for each message

Common Patterns

Script with tool restrictions
claude -p "Analyze the codebase" \
  --allowedTools "Read,Grep,Glob" \
  --disallowedTools "Write,Edit,Bash"
CI/CD integration
claude -p "Review this PR diff" \
  --permission-mode acceptEdits \
  --output-format json \
  --append-system-prompt "Focus on security issues"
Multi-turn automation
session=$(claude -p "Start task" --output-format json | jq -r '.session_id')
claude --resume "$session" "Continue with step 2"
claude --resume "$session" "Finalize and report"

Error Handling

result=$(claude -p "Task" --output-format json)
if [[ $(echo "$result" | jq -r '.is_error') == "true" ]]; then
    echo "Error: $(echo "$result" | jq -r '.result')" >&2
    exit 1
fi

Official Documentation

Additional Resources

  • ./references/cli-options.md - Complete CLI flag reference
  • ./references/output-formats.md - Output format schemas
  • ./references/integration-patterns.md - CI/CD and scripting examples

See Also: claude-code-hooks for automation events, claude-code-debug for troubleshooting

Comments

Markdown supported