O Developer Shield troca nomes internos do seu código e do seu SQL, como tabelas, colunas, classes e funções, por pseudônimos antes do envio, sem quebrar a sintaxe. Quando a resposta da IA usa esses pseudônimos dentro de blocos de código, a Tiuri mostra os nomes originais na sua tela.
Como ligar
O Developer Shield vem desligado. Para ligar:
- escolha o perfil Desenvolvimento ou Rigoroso no popup; ou
- abra Configurações → Developer Shield e ligue “Proteção de código e SQL”.
Ele funciona no Chrome, no Edge e no Firefox (versão 140 ou mais recente).
Exemplo
-- Antes
SELECT nome, documento, renda_mensal
FROM clientes_pf
WHERE uf = 'ES' AND documento = '123.456.789-09';
-- Depois
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}';
Cada nome recebe sempre o mesmo pseudônimo dentro da conversa, em todas as ocorrências. O CPF é tratado pela detecção de dados pessoais.
Linguagens
| Linguagem / formato | Suporte | O que protege |
|---|---|---|
| PostgreSQL | Produção | Schema, tabela, coluna, view, função, procedure, trigger, índice, sequência, papel, política, tipo, variável |
| T-SQL / SQL Server | Produção | Schema, tabela, coluna, view, função, procedure, índice, sequência |
| MySQL / MariaDB | Produção | Schema, tabela, coluna, view, índice, procedure, função, trigger, variável |
| SQLite | Produção | Schema, tabela, coluna, view, índice, trigger |
| Oracle / PL/SQL | Produção | Schema, tabela, coluna, view, índice, sequência, procedure, função, pacote, trigger, tipo, variável |
| JavaScript / TypeScript | Produção | Classes, funções, métodos, módulos relativos e nomes de negócio |
| Python | Produção | Classes, funções, métodos e nomes de negócio |
| Java | Produção | Pacotes, classes, métodos e nomes de negócio |
| C / C++ | Produção | Namespaces, classes, funções, nomes de negócio e nomes de macros definidas no trecho |
| C# | Produção | Namespaces, classes, records, interfaces, métodos e nomes de negócio |
| Go | Produção | Pacotes, tipos, funções, métodos e nomes de negócio |
| Shell (bash) | Produção | Nomes de funções e variáveis locais com nome de negócio, inclusive quando aparecem dentro de strings com aspas duplas |
| PowerShell | Produção | Funções, classes, métodos, propriedades e nomes de negócio (o $ é mantido) |
“Nomes de negócio” são variáveis, parâmetros e campos com duas ou mais palavras ou com 10 caracteres ou mais, como settlement_batch. Nomes genéricos (i, data, result, status, self), nomes compostos só de palavras genéricas (base_url, page_size), APIs da plataforma, chaves de objeto e nomes JSX ficam como estão, de propósito.
O status de cada linguagem vem dos testes da extensão e aparece também em Configurações → Developer Shield.
Texto misturado
Você pode escrever a pergunta antes e depois do código, usar blocos com a linguagem indicada (por exemplo, ```sql) e mandar mais de uma linguagem na mesma mensagem, em blocos separados.
Quando o envio é bloqueado
O Developer Shield prefere bloquear a enviar algo sem proteção. O envio é bloqueado, com uma mensagem que diz o motivo, quando:
- há código fora de um bloco que ele consegue analisar;
- o SQL tem erro de sintaxe, o dialeto não é identificado ou mistura dialetos;
- a análise não termina a tempo ou não consegue proteger todos os nomes com segurança.
Limites
- Corpos de rotinas PL/pgSQL e
LANGUAGE sqle SQL num único literal, comoEXECUTE '...',EXEC('...'),sp_executesql N'...',EXECUTE IMMEDIATE '...'ePREPARE ... FROM '...', são analisados; SQL montado em strings (concatenação, variáveis ouformat()) não é. - Sintaxe exclusiva do MariaDB, como tabelas versionadas pelo sistema, bloqueia o envio.
- SQL sem marcas de dialeto é tentado com PostgreSQL, MySQL, SQLite, T-SQL e Oracle, nessa ordem; vale o primeiro que aceita o texto inteiro.
- Em C e C++, parâmetros e corpo de macros nunca são reescritos, e nenhuma macro é renomeada quando o trecho usa
#ou##. - Em Shell, variáveis em MAIÚSCULAS ou exportadas, comandos e o texto literal das strings não são renomeados; referências a variáveis dentro de strings com aspas duplas são protegidas.
- Pseudônimos que não estão no cofre da conversa ficam como estão na resposta; a Tiuri avisa quando não consegue restaurar um nome.
Credenciais no meio do código são tratadas pela detecção de segredos: veja Dados detectados.