Na prática

Antes e depois

Exemplos sintéticos com a saída real da extensão.

SQL

Antes

consulta.sql
SELECT nome, documento, renda_mensal
FROM clientes_pf
WHERE uf = 'ES' AND documento = '123.456.789-09';

Depois, com o Developer Shield ligado: o que a IA recebe

consulta.sql
SELECT TI_COLUMN_NAME_NAME_2VNXFSFX, TI_COLUMN_NAME_RECORD_2M83AD8B, TI_COLUMN_NAME_FIELD_Y70GZ1PA
FROM TI_TABLE_NAME_CUSTOMER_9YN4D88A
WHERE TI_COLUMN_NAME_FIELD_HD72ZG8C = 'ES' AND TI_COLUMN_NAME_RECORD_2M83AD8B = '{cpf:qzt6k2x8}';

Com o Developer Shield ligado, a tabela e as colunas viram pseudônimos e o CPF vira um marcador. A sintaxe continua válida. Sem o Developer Shield, só o CPF é trocado.

Python

Antes

storage.py
import boto3

AWS_SECRET_ACCESS_KEY = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
s3 = boto3.client("s3", region_name="sa-east-1")

Depois, no padrão

Envio bloqueado. O texto não é enviado, e a Tiuri mostra “Envio bloqueado pela política de proteção. Edite o texto ou cancele; o texto continua no campo.”

Com “Bloquear segredos críticos” desligado: o que a IA recebe

storage.py
import boto3

AWS_SECRET_ACCESS_KEY = "{aws_secret:1ma517xj}"
s3 = boto3.client("s3", region_name="sa-east-1")

A chave secreta da AWS só é reconhecida com o pacote TI/DevOps, ligado nos perfis Trabalho, Desenvolvimento e Rigoroso; no perfil padrão (Equilibrado), esse pacote fica desligado. Com ele ligado, a chave é um segredo crítico e, por padrão, o envio é bloqueado.

Configuração

Antes

.env
DATABASE_URL=postgres://app:S3nh4@10.0.4.12:5432/prod

Depois, no padrão

Envio bloqueado. O texto não é enviado, e a Tiuri mostra “Envio bloqueado pela política de proteção. Edite o texto ou cancele; o texto continua no campo.”

Com “Bloquear segredos críticos” desligado: o que a IA recebe

.env
DATABASE_URL={connection_string:yck4kqx2}

A string de conexão com senha é reconhecida em qualquer perfil. É um segredo crítico: por padrão, o envio é bloqueado. Para trocar o valor por um marcador, desligue “Bloquear segredos críticos” nas configurações da extensão.

Cobertura

O que o Developer Shield reconhece

Nomes internos, trocados por pseudônimos consistentes em todas as ocorrências.

Em SQL

  • schemas
  • tabelas
  • colunas
  • views
  • funções
  • procedures
  • triggers
  • índices
  • variáveis de rotinas
  • sequências

Em código

  • classes
  • funções
  • métodos
  • pacotes
  • namespaces
  • módulos relativos
  • variáveis, parâmetros e campos com nome de negócio

Ficam como estão, de propósito

  • i
  • data
  • result
  • base_url
  • APIs da plataforma

Nomes genéricos, nomes compostos só de palavras genéricas e APIs da plataforma não são trocados.

Segredos no código

Pegos pela detecção de segredos, que funciona com ou sem o Developer Shield.

Sempre ligados

  • Chaves privadas (PEM, OpenSSH, PGP)
  • Chaves de API com prefixo conhecido (OpenAI, Anthropic, Google, GitHub, Slack, Stripe e chave de acesso da AWS)
  • Tokens de acesso usados como credencial (cabeçalho Bearer, access_token)
  • Cookies de sessão e credenciais HTTP Basic
  • Strings de conexão com banco de dados que trazem senha
  • Tokens JWT soltos (revisados e trocados por marcador, sem bloquear)

Com o pacote TI/DevOps

Ligado nos perfis Trabalho, Desenvolvimento e Rigoroso.

  • AWS Secret Access Key
  • Tokens de npm, PyPI, SendGrid, Discord e Twilio
  • Credenciais de Firebase e Azure Storage
  • Strings de conexão JDBC
  • Endereços IP privados e endereços MAC

Por padrão, a opção “Bloquear segredos críticos” vem ligada: quando a Tiuri encontra um segredo crítico, como uma chave privada, uma chave de API, um token de acesso, um cookie de sessão ou uma string de conexão com senha, ela bloqueia o envio até você removê-lo, em qualquer modo.

Linguagens

Linguagens e formatos

13 linguagens e dialetos no nível Produção, o mais alto da extensão: a proteção funciona de ponta a ponta nos testes. O nível vem dos testes, não é declarado à mão, e os limites de cada linguagem estão abaixo.

Linguagem / formatoSuporteO que protege
PostgreSQLProduçãoSchema, tabela, coluna, view, função, procedure, trigger, índice, sequência, papel, política, tipo, variável
T-SQL / SQL ServerProduçãoSchema, tabela, coluna, view, função, procedure, índice, sequência
MySQL / MariaDBProduçãoSchema, tabela, coluna, view, índice, procedure, função, trigger, variável
SQLiteProduçãoSchema, tabela, coluna, view, índice, trigger
Oracle / PL/SQLProduçãoSchema, tabela, coluna, view, índice, sequência, procedure, função, pacote, trigger, tipo, variável
JavaScript / TypeScriptProduçãoClasses, funções, métodos, módulos relativos e nomes de negócio
PythonProduçãoClasses, funções, métodos e nomes de negócio
JavaProduçãoPacotes, classes, métodos e nomes de negócio
C / C++ProduçãoNamespaces, classes, funções, nomes de negócio e nomes de macros definidas no trecho
C#ProduçãoNamespaces, classes, records, interfaces, métodos e nomes de negócio
GoProduçãoPacotes, tipos, funções, métodos e nomes de negócio
Shell (bash)ProduçãoNomes de funções e variáveis locais com nome de negócio, inclusive quando aparecem dentro de strings com aspas duplas
PowerShellProduçãoFunções, classes, métodos, propriedades e nomes de negócio (o $ é mantido)
Limites por linguagem (13)
PostgreSQL
Corpos de rotinas PL/pgSQL e LANGUAGE sql são analisados; SQL montado em strings (concatenação ou format()) não é.
T-SQL / SQL Server
Literais de EXEC('...') e sp_executesql N'...' são analisados; SQL montado em strings (concatenação, variáveis) não é.
MySQL / MariaDB
Sintaxe exclusiva do MariaDB (por exemplo, tabelas versionadas pelo sistema) bloqueia o envio. Scripts com DELIMITER e PREPARE ... FROM '...' com um único literal são analisados.
SQLite
SQL sem marcas de dialeto é tentado com PostgreSQL, MySQL, SQLite, T-SQL e, por último, Oracle; vale o primeiro que aceita o texto inteiro.
Oracle / PL/SQL
Blocos PL/SQL, procedures, funções, pacotes, triggers e tipos são analisados, inclusive EXECUTE IMMEDIATE '...' com um único literal; SQL montado por concatenação ou em variáveis não é, e apelidos de tabela ficam como estão.
JavaScript / TypeScript
Nomes genéricos, chaves de objeto, nomes JSX e APIs da plataforma ficam como estão.
Python
Nomes genéricos e métodos especiais (dunder) ficam como estão.
Java
Nomes genéricos e métodos como toString e equals ficam como estão.
C / C++
Parâmetros e corpo de macros nunca são reescritos; nenhuma macro é renomeada se o trecho usa # ou ##.
C#
Nomes genéricos, hooks do framework (ToString, Dispose…) e APIs chamadas ficam como estão.
Go
Imports, funções chamadas e hooks de interface (String, Error…) ficam como estão.
Shell (bash)
Variáveis em MAIÚSCULAS ou exportadas, comandos, parâmetros posicionais e o texto literal das strings não são renomeados.
PowerShell
Variáveis automáticas e com escopo, cmdlets e membros externos ficam como estão. O mesmo nome escrito com outras maiúsculas recebe o mesmo pseudônimo.

A resposta volta legível

Se a resposta da IA usar os pseudônimos, como em TI_TABLE_NAME_CUSTOMER_9YN4D88A, a Tiuri mostra o nome original na sua tela. A ferramenta de IA continua sem ter recebido o nome.

Marcadores que não estão no cofre desta conversa ficam como estão; a Tiuri nunca tenta adivinhar o valor. Quando um identificador de código da resposta não pode ser restaurado, a Tiuri avisa.

Proteja o próximo trecho que você colar.

Instalar Tiuri