Pular para o conteúdo principal

Visão geral

O modo sem interface permite executar Claude Code programaticamente a partir de scripts de linha de comando e ferramentas de automação sem qualquer interface interativa.

Uso básico

A interface de linha de comando principal para Claude Code é o comando claude. Use a flag --print (ou -p) para executar em modo não interativo e imprimir o resultado final:
claude -p "Stage my changes and write a set of commits for them" \
  --allowedTools "Bash,Read" \
  --permission-mode acceptEdits

Opções de configuração

O modo sem interface aproveita todas as opções de CLI disponíveis em Claude Code. Aqui estão as principais para automação e scripts:
FlagDescriçãoExemplo
--print, -pExecutar em modo não interativoclaude -p "query"
--output-formatEspecificar formato de saída (text, json, stream-json)claude -p --output-format json
--resume, -rRetomar uma conversa por ID de sessãoclaude --resume abc123
--continue, -cContinuar a conversa mais recenteclaude --continue
--verboseAtivar registro detalhadoclaude --verbose
--append-system-promptAnexar ao prompt do sistema (apenas com --print)claude --append-system-prompt "Custom instruction"
--allowedToolsLista de ferramentas permitidas separadas por espaço, ou

string de lista separada por vírgulas de ferramentas permitidas
claude --allowedTools mcp__slack mcp__filesystem

claude --allowedTools "Bash(npm install),mcp__filesystem"
--disallowedToolsLista de ferramentas negadas separadas por espaço, ou

string de lista separada por vírgulas de ferramentas negadas
claude --disallowedTools mcp__splunk mcp__github

claude --disallowedTools "Bash(git commit),mcp__github"
--mcp-configCarregar servidores MCP de um arquivo JSONclaude --mcp-config servers.json
--permission-prompt-toolFerramenta MCP para lidar com prompts de permissão (apenas com --print)claude --permission-prompt-tool mcp__auth__prompt
Para uma lista completa de opções de CLI e recursos, consulte a documentação de referência de CLI.

Conversas com múltiplas rodadas

Para conversas com múltiplas rodadas, você pode retomar conversas ou continuar a partir da sessão mais recente:
# Continue the most recent conversation
claude --continue "Now refactor this for better performance"

# Resume a specific conversation by session ID
claude --resume 550e8400-e29b-41d4-a716-446655440000 "Update the tests"

# Resume in non-interactive mode
claude --resume 550e8400-e29b-41d4-a716-446655440000 "Fix all linting issues" --no-interactive

Formatos de saída

Saída de texto (padrão)

claude -p "Explain file src/components/Header.tsx"
# Output: This is a React component showing...

Saída JSON

Retorna dados estruturados incluindo metadados:
claude -p "How does the data layer work?" --output-format json
Formato de resposta:
{
  "type": "result",
  "subtype": "success",
  "total_cost_usd": 0.003,
  "is_error": false,
  "duration_ms": 1234,
  "duration_api_ms": 800,
  "num_turns": 6,
  "result": "The response text here...",
  "session_id": "abc123"
}

Saída JSON em fluxo contínuo

Transmite cada mensagem conforme é recebida:
claude -p "Build an application" --output-format stream-json
Cada conversa começa com uma mensagem inicial do sistema init, seguida por uma lista de mensagens do usuário e do assistente, seguida por uma mensagem final do sistema result com estatísticas. Cada mensagem é emitida como um objeto JSON separado.

Formatos de entrada

Entrada de texto (padrão)

# Direct argument
claude -p "Explain this code"

# From stdin
echo "Explain this code" | claude -p

Entrada JSON em fluxo contínuo

Um fluxo de mensagens fornecido via stdin onde cada mensagem representa uma rodada do usuário. Isso permite múltiplas rodadas de uma conversa sem relançar o binário claude e permite fornecer orientação ao modelo enquanto ele processa uma solicitação. Cada mensagem é um objeto JSON ‘Mensagem do usuário’, seguindo o mesmo formato que o esquema de mensagem de saída. As mensagens são formatadas usando o formato jsonl onde cada linha de entrada é um objeto JSON completo. A entrada JSON em fluxo contínuo requer -p e --output-format stream-json.
echo '{"type":"user","message":{"role":"user","content":[{"type":"text","text":"Explain this code"}]}}' | claude -p --output-format=stream-json --input-format=stream-json --verbose

Exemplos de integração de agentes

Bot de resposta a incidentes SRE

#!/bin/bash

# Automated incident response agent
investigate_incident() {
    local incident_description="$1"
    local severity="${2:-medium}"

    claude -p "Incident: $incident_description (Severity: $severity)" \
      --append-system-prompt "You are an SRE expert. Diagnose the issue, assess impact, and provide immediate action items." \
      --output-format json \
      --allowedTools "Bash,Read,WebSearch,mcp__datadog" \
      --mcp-config monitoring-tools.json
}

# Usage
investigate_incident "Payment API returning 500 errors" "high"

Revisão de segurança automatizada

# Security audit agent for pull requests
audit_pr() {
    local pr_number="$1"

    gh pr diff "$pr_number" | claude -p \
      --append-system-prompt "You are a security engineer. Review this PR for vulnerabilities, insecure patterns, and compliance issues." \
      --output-format json \
      --allowedTools "Read,Grep,WebSearch"
}

# Usage and save to file
audit_pr 123 > security-report.json

Assistente jurídico com múltiplas rodadas

# Legal document review with session persistence
session_id=$(claude -p "Start legal review session" --output-format json | jq -r '.session_id')

# Review contract in multiple steps
claude -p --resume "$session_id" "Review contract.pdf for liability clauses"
claude -p --resume "$session_id" "Check compliance with GDPR requirements"
claude -p --resume "$session_id" "Generate executive summary of risks"

Melhores práticas

  • Use formato de saída JSON para análise programática de respostas:
    # Parse JSON response with jq
    result=$(claude -p "Generate code" --output-format json)
    code=$(echo "$result" | jq -r '.result')
    cost=$(echo "$result" | jq -r '.cost_usd')
    
  • Trate erros com elegância - verifique códigos de saída e stderr:
    if ! claude -p "$prompt" 2>error.log; then
        echo "Error occurred:" >&2
        cat error.log >&2
        exit 1
    fi
    
  • Use gerenciamento de sessão para manter contexto em conversas com múltiplas rodadas
  • Considere tempos limite para operações de longa duração:
    timeout 300 claude -p "$complex_prompt" || echo "Timed out after 5 minutes"
    
  • Respeite limites de taxa ao fazer múltiplas solicitações adicionando atrasos entre chamadas

Recursos relacionados