Pular para o conteúdo
Skillpedia
Agentes280 mil · #226

llm-trading-agent-security

Faz seu agente lidar com segurança em negociações. Ele protege contra fraudes, define limites e verifica transações para agentes de negociação autônomos.

O que ela faz

Este agente de IA ajuda a proteger suas transações financeiras automatizadas. Ele verifica se os comandos enviados para a IA são seguros e se os limites de gastos estão sendo respeitados, evitando perdas de dinheiro.

Quando usar

  • ✓Quando você cria um robô de investimento que faz transações automaticamente.
  • ✓Ao revisar a segurança de um agente que gerencia seu dinheiro.
  • ✓Se você quer definir limites de quanto dinheiro um agente pode gastar.

Exemplo do que pedir para a IA

“Verifique se este comando de investimento é seguro antes de executá-lo.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/affaan-m/ECC/blob/main/skills/llm-trading-agent-security/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/skills/llm-trading-agent-security/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele funciona adicionando várias camadas de segurança. Isso inclui verificar os comandos para evitar que sejam enganados, impor limites de gastos e simular transações antes de enviá-las.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add affaan-m/ECC --skill llm-trading-agent-security

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/skills/llm-trading-agent-security/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Segurança de Agentes de Trading com LLM

Agentes de trading autônomos têm um modelo de ameaças mais severo do que aplicativos LLM normais: uma injeção ou um caminho de ferramenta incorreto pode se transformar diretamente em perda de ativos.

Quando Usar

  • Construindo um agente de IA que assina e envia transações
  • Auditando um bot de trading ou um assistente de execução on-chain
  • Projetando o gerenciamento de chaves de carteira para um agente
  • Dando a um LLM acesso a colocação de ordens, swaps ou operações de tesouraria

Como Funciona

Camadas de defesa. Nenhuma verificação única é suficiente. Trate a higiene de prompts, política de gastos, simulação, limites de execução e isolamento de carteira como controles independentes.

Exemplos

Trate a injeção de prompt como um ataque financeiro

import re

INJECTION_PATTERNS = [
    r'ignore (previous|all) instructions',
    r'new (task|directive|instruction)',
    r'system prompt',
    r'send .{0,50} to 0x[0-9a-fA-F]{40}',
    r'transfer .{0,50} to',
    r'approve .{0,50} for',
]

def sanitize_onchain_data(text: str) -> str:
    for pattern in INJECTION_PATTERNS:
        if re.search(pattern, text, re.IGNORECASE):
            raise ValueError(f"Potential prompt injection: {text[:100]}")
    return text

Não injete cegamente nomes de tokens, rótulos de pares, webhooks ou feeds sociais em um prompt capaz de execução.

Limites de gastos rígidos

from decimal import Decimal

MAX_SINGLE_TX_USD = Decimal("500")
MAX_DAILY_SPEND_USD = Decimal("2000")

class SpendLimitError(Exception):
    pass

class SpendLimitGuard:
    def check_and_record(self, usd_amount: Decimal) -> None:
        if usd_amount > MAX_SINGLE_TX_USD:
            raise SpendLimitError(f"Single tx ${usd_amount} exceeds max ${MAX_SINGLE_TX_USD}")

        daily = self._get_24h_spend()
        if daily + usd_amount > MAX_DAILY_SPEND_USD:
            raise SpendLimitError(f"Daily limit: ${daily} + ${usd_amount} > ${MAX_DAILY_SPEND_USD}")

        self._record_spend(usd_amount)

Simule antes de enviar

class SlippageError(Exception):
    pass

async def safe_execute(self, tx: dict, expected_min_out: int | None = None) -> str:
    sim_result = await self.w3.eth.call(tx)

    if expected_min_out is None:
        raise ValueError("min_amount_out is required before send")

    actual_out = decode_uint256(sim_result)
    if actual_out < expected_min_out:
        raise SlippageError(f"Simulation: {actual_out} < {expected_min_out}")

    signed = self.account.sign_transaction(tx)
    return await self.w3.eth.send_raw_transaction(signed.raw_transaction)

Disjuntor (Circuit Breaker)

class TradingCircuitBreaker:
    MAX_CONSECUTIVE_LOSSES = 3
    MAX_HOURLY_LOSS_PCT = 0.05

    def check(self, portfolio_value: float) -> None:
        if self.consecutive_losses >= self.MAX_CONSECUTIVE_LOSSES:
            self.halt("Too many consecutive losses")

        if self.hour_start_value <= 0:
            self.halt("Invalid hour_start_value")
            return

        hourly_pnl = (portfolio_value - self.hour_start_value) / self.hour_start_value
        if hourly_pnl < -self.MAX_HOURLY_LOSS_PCT:
            self.halt(f"Hourly PnL {hourly_pnl:.1%} below threshold")

Isolamento de carteira

import os
from eth_account import Account

private_key = os.environ.get("TRADING_WALLET_PRIVATE_KEY")
if not private_key:
    raise EnvironmentError("TRADING_WALLET_PRIVATE_KEY not set")

account = Account.from_key(private_key)

Use uma carteira quente dedicada com apenas os fundos de sessão necessários. Nunca aponte o agente para uma carteira de tesouraria principal.

Proteção MEV e de prazo

import time

PRIVATE_RPC = "https://rpc.flashbots.net"
MAX_SLIPPAGE_BPS = {"stable": 10, "volatile": 50}
deadline = int(time.time()) + 60

Checklist de Pré-Implantação

  • Dados externos são sanitizados antes de entrar no contexto do LLM
  • Limites de gastos são aplicados independentemente da saída do modelo
  • Transações são simuladas antes do envio
  • min_amount_out é obrigatório
  • Disjuntores (Circuit breakers) param em caso de drawdown ou estado inválido
  • Chaves vêm de variáveis de ambiente ou de um gerenciador de segredos, nunca de código ou logs
  • Mempool privado ou roteamento protegido é usado quando apropriado
  • Slippage e prazos são definidos por estratégia
  • Todas as decisões do agente são registradas em auditoria, não apenas envios bem-sucedidos
Perguntas frequentes

O que é 'prompt injection'?

É quando alguém tenta enganar a IA com comandos maliciosos para fazê-la agir de forma indesejada, como enviar dinheiro para um endereço errado.

O que são 'spend limits' (limites de gastos)?

São regras que definem o valor máximo que um agente de IA pode gastar em uma única transação ou em um dia, para evitar perdas grandes.

Por que simular transações antes de enviá-las?

Simular permite ver o resultado de uma transação antes de ela acontecer de verdade. Isso ajuda a garantir que o resultado seja o esperado e a evitar perdas por mudanças inesperadas no mercado (slippage).

Detalhes

Descrição original do autor

Security patterns for autonomous trading agents with wallet or transaction authority. Covers prompt injection, spend limits, pre-send simulation, circuit breakers, MEV protection, and key handling. Use when an autonomous agent holds wallet or transaction authority and its limits, simulation, or key handling need review.

repo: affaan-m/ECC

Popularidade

Estrelas no GitHub
280 mil
Posição no ranking
#226
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas