Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack šŸŽ‰ Learn more
LibreChat

Estrutura do Objeto Actions

As Actions podem ser usadas para criar ferramentas dinamicamente a partir de especificações OpenAPI. A estrutura do objeto actions permite que você especifique domínios permitidos para ações de agentes/assistentes.

Mais informaƧƵes: Agents - Actions

Exemplo

# Example Actions Object Structure
actions:
  # Strict whitelist mode:
  # allowedDomains:
  #   - "swapi.dev"
  #   - "librechat.ai"
  #   - "google.com"
  #   - "https://api.example.com:8443"  # With protocol and port

  # Default SSRF mode with private service exemptions:
  allowedAddresses:
    - "host.docker.internal:11434"    # Permit one private host on one port
    - "10.0.0.5:8080"                 # Permit one private IP on one port

allowedDomains

Chave:

KeyTypeDescriptionExample
allowedDomainsArray of StringsUma lista que especifica domƭnios permitidos para aƧƵes de agentes/assistentes.When configured, only listed domains are allowed. When not configured, SSRF targets are blocked but all other domains are allowed.

Opcional

Contexto de Segurança (Proteção SSRF)

O LibreChat inclui proteção contra SSRF (Server-Side Request Forgery) com o seguinte comportamento:

Quando allowedDomains NƃO estiver configurado:

  • Alvos suscetĆ­veis a SSRF sĆ£o bloqueados por padrĆ£o
  • Todos os outros domĆ­nios externos sĆ£o permitidos

Quando allowedDomains ESTƁ configurado:

  • Apenas domĆ­nios na lista sĆ£o permitidos
  • Alvos internos/SSRF podem ser permitidos adicionando-os explicitamente Ć  lista

Os alvos de SSRF bloqueados incluem:

  • EndereƧos Localhost (localhost, 127.0.0.1, ::1)
  • Intervalos de IP privados (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
  • EndereƧos link-local (169.254.0.0/16, inclui IPs de metadados de nuvem)
  • TLDs Internos (.internal, .local, .localhost)
  • Nomes comuns de serviƧos internos (redis, mongodb, postgres, api, etc.)

Se suas ações precisarem acessar serviços internos, adicione-os à lista de permissões estrita allowedDomains ou deixe allowedDomains sem definição e adicione o serviço privado exato a allowedAddresses.

Formatos de Padrão

O array allowedDomains suporta vƔrios formatos:

  1. Apenas domĆ­nio - Permite todos os protocolos e portas:

    allowedDomains:
      - "api.example.com"
  2. Com protocolo - Restringe a um protocolo especĆ­fico:

    allowedDomains:
      - "https://api.example.com"
  3. Com protocolo e porta - Restringe a um protocolo e porta especĆ­ficos:

    allowedDomains:
      - "https://api.example.com:8443"
  4. EndereƧos internos (devem ser explicitamente permitidos):

    allowedDomains:
      - "192.168.1.100"
      - "internal-api.local"

Exemplo:

allowedDomains:
  - "swapi.dev"
  - "librechat.ai"
  - "google.com"
  - "https://secure-api.example.com:443"
  - "192.168.1.50"  # Internal service (explicitly allowed)

allowedAddresses

allowedAddresses Ć© uma lista de exceƧƵes para o bloqueio de IP privado SSRF — nĆ£o uma lista de permissƵes de domĆ­nio. Ɖ a ferramenta certa quando vocĆŖ deseja permitir um ou dois serviƧos privados/internos especĆ­ficos sem restringir o que suas Actions podem alcanƧar na internet pĆŗblica.

Quando usar em vez de allowedDomains

allowedDomains é uma lista de permissões estrita: quando definida, apenas as entradas listadas podem ser acessadas. Adicionar um IP privado nela para permitir, por exemplo, uma API interna auto-hospedada, também bloqueia todos os endpoints de ação públicos que você não tenha listado.

allowedAddresses é usado apenas quando allowedDomains não estÔ configurado. Ele permite alvos privados específicos host:port enquanto mantém o restante da internet pública acessível através da política SSRF padrão.

actions:
  allowedAddresses:
    - "host.docker.internal:11434"
    - "10.0.0.5:8080"
  # allowedDomains is intentionally not set — public destinations
  # remain reachable, only listed private host:port services are exempted.

Se allowedDomains estiver configurado, ele Ʃ autoritativo: serviƧos privados devem ser listados lƔ em vez de depender de allowedAddresses.

Entradas aceitƔveis

  • Nomes de host com porta: host.docker.internal:11434, ollama.internal:8080, localhost:11434
  • Literais IPv4 privados com porta: 10.0.0.5:8080, 127.0.0.1:11434, 192.168.1.10:443, 169.254.169.254:80
  • Literais IPv6 privados entre colchetes com porta: [::1]:11434, [fc00::1]:8080, [fe80::1]:8080

Entradas rejeitadas (validadas no carregamento da configuração)

  • URLs / caminhos / intervalos CIDR: http://10.0.0.5, 10.0.0.0/24, /path
  • Nomes de host ou IPs simples: localhost, 10.0.0.5, ::1, [::1] — cada entrada deve incluir uma porta
  • Portas invĆ”lidas: localhost:0, localhost:65536, localhost:http
  • Literais de IP pĆŗblico: 8.8.8.8:53, 1.1.1.1:53, [2001:4860::8888]:443 — o campo Ć© limitado ao espaƧo de IP privado; IPs pĆŗblicos nĆ£o sĆ£o alvos de SSRF e uma exceção de IP pĆŗblico nĆ£o tem propósito defensivo

ConfianƧa de hostname

Uma entrada de hostname confia em qualquer IP para o qual esse hostname seja resolvido em tempo de execução na porta listada. Se o DNS de um hostname listado for rotacionado ou sequestrado para apontar para um IP privado diferente, a isenção seguirÔ o mesmo caminho. Liste apenas hostnames cujo DNS você controla. Prefira IPs literais sempre que puder.

Como estĆ” este guia?