Como testar o GPT-6 Astra sem expor código sensível da empresa

como testar o GPT-6 Astra sem expor código sensível da empresa
Resposta rápida

Dá pra testar o GPT-6 Astra sem entregar código proprietário: em vez de colar arquivo do repositório privado, você monta um recorte que reproduz o problema técnico com módulo público, nomes anonimizados e dados fictícios de mesmo formato. Antes do primeiro prompt, decida o canal: contas ChatGPT Business, Enterprise, Edu e a plataforma de API ficam fora do treino por padrão, Free e Plus não. No ChatGPT dá pra desligar ‘Improve the model for everyone’ e usar Temporary Chat; na API dá pra enviar store: false. E se a política interna proíbe qualquer envio, existem caminhos formais como ZDR e residência de dados 🙂

Todo mundo quer avaliar o modelo novo, e quase ninguém quer explicar depois por que um trecho do repositório privado foi parar num chat

O GPT-6 Astra é o modelo de topo da linha da OpenAI, posicionado para engenharia de software, uso de computador, ciência e trabalho profissional

Ele chegou em preview limitado no dia 03/09/2026, e no dia seguinte veio a liberação a pagantes, numa versão restrita que recusa certos prompts, como os de cibersegurança

Sam Altman classificou o rollout como "messy": o acesso inicial ficou com organizações do programa Daybreak, enquanto assinantes Plus, Pro, Business, Enterprise e devs da API esperavam liberação incremental

E é exatamente nesse clima de fila e ansiedade que o pessoal faz a besteira clássica, que é jogar o arquivo real do trabalho no prompt "só pra ver como ele se sai"

Bora montar um jeito melhor de fazer isso?

Antes de começar: o que você precisa ter decidido

Recorte bom começa antes do código

Se você abrir a janela do chat e só depois pensar no que pode ou não sair da empresa, já perdeu

Tem três decisões que precisam estar fechadas:

  • Qual canal você vai usar: ChatGPT ou API, e em qual tipo de conta
  • Se existe política escrita na sua organização sobre envio de código para serviço externo (e quem assina essa política)
  • Qual pergunta técnica o teste responde, em uma frase só (‘ele refatora esse padrão de repositório sem quebrar contrato?’ é pergunta, ‘ele é bom?’ não é)

O que é verificável sobre treino por padrão:

Esse é o ponto que mais gera confusão, então vale a tabela

Canal Dados usados para treinar modelo por padrão
ChatGPT Free e Plus Sim, compartilhamento ligado por padrão
ChatGPT Business, Enterprise e Edu Não
Plataforma de API Não

Na API, por padrão, a OpenAI não usa entradas e saídas para treinar ou melhorar modelos, salvo opt-in explícito da organização

Isso não significa que nada é guardado: as entradas e saídas da API ficam retidas por até 30 dias para monitoramento de abuso, e depois são apagadas, salvo obrigação legal de retenção maior

São coisas diferentes, e confundir as duas é o começo de uma conversa ruim com o time de segurança

E se a empresa já tem contrato com a Microsoft?

O GPT-6 Astra também está listado no catálogo do Microsoft Azure AI Foundry, com condições de acesso e cota próprias

Se o contrato de nuvem da sua empresa já mora lá, esse pode ser o caminho de menor atrito burocrático, porque a discussão de fornecedor já foi vencida antes de você chegar

Passo a passo: montando um recorte de teste que representa o projeto real

A ideia central: você não quer mandar o seu código, você quer mandar o seu problema

São coisas separadas, e a maior parte das pessoas nunca parou pra reparar nisso

É como pedir opinião de um arquiteto sobre um vão livre: tu não precisa mandar a planta com o endereço, o nome do cliente e o orçamento, tu manda o vão

  1. Escolha o alvo do teste: o problema técnico, não o arquivo

Escreva em uma linha o que você quer avaliar

Exemplo: "ele consegue extrair uma regra de negócio espalhada em três métodos e transformar em uma classe de política, mantendo a assinatura pública?"

Repare que essa frase não tem nada de proprietário dentro dela

Erro comum deste passo: escolher o arquivo mais crítico do sistema como alvo, porque "é o que importa". O que importa é o padrão do código, e padrão se reproduz

  1. Parta de um módulo público ou open source com forma parecida

Se o seu sistema usa um padrão de repositório com cache e retry, procure um projeto open source que faça isso e use ele como esqueleto

Você muda o que precisa pra ficar parecido com o seu caso, e o resultado é um código que ninguém pode reclamar que saiu de dentro de casa

Erro comum deste passo: pegar o módulo público e ir colando pedaços do código real dentro dele até "ficar igual". Aí não é mais recorte, é o original com um disfarce ruim

  1. Anonimize domínio, entidades e regras de negócio

Aqui é troca de nome com método, não busca e substitui no susto

# ANTES (não envie isso)
class CalculadoraComissaoMagazineParceiro:
    """Regra fechada com a Distribuidora Silva em jan/2025.
    Contato: [email protected]
    """
    TAXA_PARCEIRO_OURO = 0.073

    def calcular(self, pedido):
        if pedido.cnpj_parceiro in CNPJS_ISENTOS:
            return 0
        return pedido.total * self.TAXA_PARCEIRO_OURO
# DEPOIS (recorte enviável)
class CalculadoraComissaoParceiro:
    """Comissao por faixa de parceiro, com lista de isencao."""
    TAXA_FAIXA_A = 0.10

    def calcular(self, pedido):
        if pedido.id_parceiro in IDS_ISENTOS:
            return 0
        return pedido.total * self.TAXA_FAIXA_A

Repare que a forma do problema continua idêntica: condicional de isenção, taxa por faixa, retorno cedo

O que sumiu foi o cliente, o e-mail, a data do contrato e a taxa real

Erro comum deste passo: renomear a classe e esquecer o comentário, a docstring e o nome da variável de teste. O nome do cliente quase sempre sobrevive no comentário, porque ninguém lê comentário 😅

  1. Substitua dados reais por exemplos equivalentes

Mesmo formato, mesmo volume, conteúdo fictício

Se o bug só aparece com CPF inválido e string de 300 caracteres, o seu exemplo precisa ter CPF inválido e string de 300 caracteres, só que inventados

{
  "id_parceiro": "PARC-000119",
  "documento": "000.000.000-00",
  "total": 1499.90,
  "itens": 37,
  "observacao": "texto longo de exemplo repetido ate bater o tamanho real do campo"
}

Erro comum deste passo: trocar por dados "bonitinhos" (3 itens, total 100.00) e perder justamente a condição que causa o comportamento que você queria avaliar

  1. Remova segredos, tokens, endpoints internos e caminhos de infraestrutura

Chave de API, string de conexão, host interno, nome de bucket, caminho absoluto de máquina, nome de repositório privado

Tudo isso vai embora, e no lugar entra placeholder

# ANTES
DATABASE_URL=postgres://svc_faturamento:[email protected]:5432/faturamento

# DEPOIS
DATABASE_URL=postgres://usuario:senha@localhost:5432/app_exemplo

Erro comum deste passo: limpar o .env e mandar junto o stack trace, que carrega caminho absoluto, nome de host e nome do repo interno em cada linha

  1. Valide que o recorte ainda reproduz o comportamento

Rode o recorte

Se o teste que falhava no projeto real não falha no recorte, o recorte não serve, e qualquer conclusão que você tirar dele vai ser sobre outro programa

pytest recorte/ -q

Erro comum deste passo: validar "no olho", sem rodar nada, e passar a tarde discutindo uma resposta do modelo sobre um código que nem compila

Ajustes de privacidade no ChatGPT e na API antes do primeiro prompt

Antes do primeiro envio, mexa nas configurações

E presta atenção numa coisa que confunde muita gente: caminho de menu do ChatGPT é do ChatGPT, não vale como configuração de API

São dois produtos, com dois lugares diferentes pra ajustar

No ChatGPT:

  1. Vá em Settings > Data Controls e desligue ‘Improve the model for everyone’

As novas conversas continuam aparecendo no seu histórico, elas só deixam de ser usadas para treinar

  1. Para um teste pontual, abra um novo chat e clique no botão ‘Temporary’, no canto superior direito

O Temporary Chat não aparece no histórico, não gera memórias e fica fora do treino independentemente daquele ajuste de ‘Improve the model for everyone’, com retenção de 30 dias por segurança

Erro comum deste passo: achar que Temporary significa "não existe em lugar nenhum". Existe, por 30 dias, por segurança

Na API:

  1. Saiba que na Responses API o parâmetro store vem como true por padrão, e o objeto fica guardado por 30 dias
  1. Envie store: false na requisição para desativar esse armazenamento
curl https://api.openai.com/v1/responses \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-astra",
    "store": false,
    "input": "Refatore o modulo abaixo mantendo a assinatura publica..."
  }'

Erro comum deste passo: configurar store: false no script de teste bonito e esquecer do notebook improvisado que alguém do time rodou na quinta à noite

  1. Se a exigência do seu time for não guardar nada em hipótese nenhuma, o caminho é o Zero Data Retention (ZDR)

ZDR não é um botão que você liga sozinho: precisa de aprovação e habilitação pelo time de contas da OpenAI, no nível da organização ou do projeto

Com ZDR ativo, o parâmetro store é sempre tratado como false em /v1/responses e /v1/chat/completions

Mais abaixo eu abro esse caminho com calma, porque ele mexe com elegibilidade de recurso e muda o desenho da arquitetura

Três recortes prontos para os testes mais comuns

Método sem exemplo vira teoria, então bora aplicar 😀

Recorte 1: avaliar refatoração de módulo legado

Entra: duas ou três classes com o padrão real de acoplamento, os nomes já anonimizados, os testes que definem o contrato público

Fica de fora: integrações internas, cliente HTTP apontando pra host da empresa, qualquer configuração de ambiente

Fidelidade: mantenha o tamanho dos métodos e o nível de aninhamento. Refatoração é sobre bagunça, e recorte limpo demais responde uma pergunta que você não fez

Recorte 2: avaliar geração de testes para uma regra de negócio

Entra: a função da regra, com as faixas e condições preservadas em estrutura, mas com valores fictícios, mais um teste existente pra servir de estilo

Fica de fora: a tabela real de faixas, os nomes dos clientes das exceções, o histórico de mudança da regra

Fidelidade: preserve a quantidade de ramos. Se a regra real tem sete condições, o recorte com duas não mede nada

Recorte 3: avaliar leitura de um schema de banco

Entra: o DDL com nomes de tabela e coluna genéricos, os tipos, as chaves e os índices

Fica de fora: dados de linha, nomes de schema internos, comentários com nome de sistema legado, credenciais em qualquer forma

CREATE TABLE parceiro (
  id            BIGSERIAL PRIMARY KEY,
  codigo        VARCHAR(16) NOT NULL UNIQUE,
  faixa         VARCHAR(8)  NOT NULL,
  criado_em     TIMESTAMPTZ NOT NULL DEFAULT now()
);

CREATE INDEX idx_parceiro_faixa ON parceiro (faixa);

O limite prático que você precisa saber antes de escolher o caso de uso:

Tem um tipo de teste que simplesmente não vai acontecer aqui

O Astra é o primeiro modelo da OpenAI classificado como nível Critical em capacidade de cibersegurança, e por isso a versão pública vem com guardrails: ela recusa tarefas afiadas e não escreve exploits de prova de conceito

Ou seja: teste de segurança ofensiva não é o caso de uso pra esperar dessa versão, e insistir só vai te render recusa

E vale a régua de sempre com qualquer saída que vier: antes de mandar pro repositório, validar a resposta do modelo continua sendo trabalho seu, não dele

Quando a política interna proíbe qualquer envio: o que ainda dá para fazer

Às vezes não é frescura do time de segurança, é contrato com cliente

E aí "nada sai daqui" é regra, não sugestão

Existem caminhos formais:

  1. Peça a habilitação de Zero Data Retention (ZDR) ao time de contas da OpenAI

ZDR não é um botão self-service: precisa de aprovação e habilitação pelo time de contas, no nível da organização ou do projeto

Com ZDR ativo, o parâmetro store é sempre tratado como false em /v1/responses e /v1/chat/completions

  1. Confira a elegibilidade antes de prometer ZDR pro seu jurídico

Nem todo recurso da plataforma entra: Chat Completions e Responses são elegíveis com limitações, enquanto Conversations, ChatKit threads, Assistants, Threads, Vector Stores, Files, Evals e Batches não são elegíveis

Erro comum deste passo: fechar o desenho da arquitetura com Vector Stores e Files no meio, e descobrir a inelegibilidade depois que o projeto já foi aprovado

  1. Habilite residência de dados criando um novo Project

No dashboard da plataforma, crie um novo Project e selecione a região

Os projetos europeus elegíveis usam o endpoint eu.api.openai.com

A residência de dados está disponível para Europa (incluindo EEE e Suíça), Reino Unido, Estados Unidos, Canadá, Japão, Coreia do Sul, Singapura, Índia, Austrália e Emirados Árabes Unidos

Erro comum deste passo: tentar mudar a região de um projeto que já existe. A região se escolhe na criação do Project novo

  1. Use o contrato de nuvem que a empresa já tem

Se o caminho da OpenAI direto trava na burocracia, o GPT-6 Astra também aparece no catálogo do Microsoft Azure AI Foundry, com condições de acesso e cota próprias

  1. Aceite a saída realista: avalie só em corpus público

Se nada disso destravar, avalie o modelo em código open source com forma parecida com a do seu sistema, documente o resultado e leve isso como evidência pra conversa interna

É menos do que você queria, e é muito mais do que zero

Um detalhe que ajuda nessa conversa com jurídico: a ordem judicial ampla que obrigava a OpenAI a preservar todos os logs do ChatGPT foi encerrada pela juíza Ona T. Wang em 9 de outubro, daí em diante

Mas seguem valendo obrigações pontuais, como a entrega de 20 milhões de logs anonimizados no caso de copyright e a retenção de contas sinalizadas pelo New York Times

Se alguém do time levantou esse ponto ano passado, o cenário mudou, e vale reabrir a discussão com o dado atual

Erros que estragam o recorte (e como prevenir)

Sintoma: o modelo acerta no recorte e erra feio no projeto real

Causa: o recorte perdeu justamente a complexidade que importava (o aninhamento, os sete ramos da regra, o estado compartilhado)

Como prevenir: antes de enviar, rode o teste que reproduz o problema no recorte. Se ele passa de primeira, o recorte está fácil demais e você vai medir a coisa errada

Sintoma: identificador de cliente vazou no log de exemplo

Causa: o código foi anonimizado com carinho e o log colado junto não passou por revisão nenhuma

Como prevenir: trate log de exemplo como código: ele entra no mesmo processo de limpeza, com dado fictício de mesmo formato

Sintoma: stack trace com caminho absoluto e nome de repositório interno

Causa: o traceback foi copiado direto do terminal, e ele carrega estrutura de pastas, usuário da máquina e nome do repo em cada linha

Como prevenir: reescreva os caminhos antes de colar

# ANTES
File "/home/mbatt/work/empresa-core-faturamento/src/billing/policy.py", line 214

# DEPOIS
File "app/billing/policy.py", line 214

Sintoma: o teste rodou numa conta pessoal Free ou Plus

Causa: ninguém checou o canal, alguém abriu a conta que já estava logada no navegador e tocou o teste

Como prevenir: nas contas Free e Plus o compartilhamento para treino vem ligado por padrão, então defina o canal ANTES e escreva isso no combinado do time

As duas prevenções que valem por todas:

  • Revise o recorte com git diff antes de enviar, lendo linha por linha, incluindo comentários e docstrings
  • Padronize um arquivo de exemplo fictício reutilizável no repositório de testes do time, pra ninguém precisar inventar dado falso com pressa às seis da tarde

Dado falso inventado com pressa é como o pessoal acaba mandando o CPF de verdade de algum colega, e isso é bem pior que não testar 🙃

Vídeo: montando fluxos de trabalho com agentes de IA

Pra começar do zero com organização de trabalho usando IA em projeto real, esse vídeo do canal mostra a montagem de um fluxo inteiro com agentes:

Conclusão: teste o modelo, não exponha o repositório

Recorte bem montado responde exatamente a mesma pergunta técnica do arquivo original, com uma fração do risco

E repara que a escolha de canal pesa tanto quanto o conteúdo do prompt: o mesmo texto enviado numa conta Free e numa organização de API com store: false tem destinos diferentes

Tem também o argumento chato, que é o custo: na API, o GPT-6 Astra sai por US$ 10 por milhão de tokens de entrada e US$ 50 por milhão de tokens de saída

Recorte curto é mais seguro e mais barato ao mesmo tempo, o que é raro na vida de dev 😀

Próximo passo: monte um recorte padrão do seu time, deixe ele versionado, e alinhe por escrito com quem cuida de segurança ANTES do primeiro envio

Combinado por escrito é o que separa um teste técnico de um problema de compliance…

até o próximo post!

Perguntas frequentes

Dá pra testar o GPT-6 Astra pelo ChatGPT Free ou Plus sem risco de vazar código da empresa?

Não é o ideal, porque nessas contas o compartilhamento de dados para treinar o modelo vem ligado por padrão. Se o teste precisa acontecer num plano Free ou Plus, use sempre o Temporary Chat ou desligue o treino nas configurações antes de colar qualquer recorte. Contas Business, Enterprise e Edu já ficam fora do treino por padrão, o que reduz esse risco de saída.

Como desligo o treino de modelo no ChatGPT antes de rodar o teste?

Vai em Settings, depois Data Controls, e desliga a opção ‘Improve the model for everyone’. As conversas seguem aparecendo no seu histórico, só não entram mais no treino. É um ajuste rápido e vale fazer antes de qualquer teste com recorte de código, mesmo anonimizado.

O Temporary Chat do ChatGPT é seguro pra testar o GPT-6 Astra com um recorte de código?

Ele ajuda bastante: o chat some do histórico, não gera memória e fica fora do treino independente do ajuste ‘Improve the model for everyone’. Ainda assim, a conversa fica retida por 30 dias por motivo de segurança, então Temporary Chat não substitui a anonimização do recorte. As duas coisas trabalham juntas, uma não anula a outra.

Na API, dá pra evitar que o teste com o GPT-6 Astra fique armazenado?

Dá. Na Responses API o parâmetro store vem como true por padrão e guarda o objeto por 30 dias, mas enviar store: false na requisição desativa esse armazenamento. Isso é diferente de treino de modelo: por padrão a API já não usa entradas e saídas para treinar, salvo opt-in explícito da organização.

O que é Zero Data Retention e como habilitar pra testar o GPT-6 Astra na API?

Zero Data Retention (ZDR) é um opt-in que precisa de aprovação e habilitação pelo time de contas da OpenAI, no nível da organização ou do projeto, não é um botão que você liga sozinho. Com ZDR ativo, o parâmetro store fica sempre como false em /v1/responses e /v1/chat/completions. Vale lembrar que nem todo recurso é elegível: Conversations, Assistants, Threads, Vector Stores, Files, Evals e Batches ficam de fora.

Por que o GPT-6 Astra recusa alguns prompts durante o teste?

Porque a versão pública liberada aos pagantes é uma versão restrita, com guardrails: ela recusa tarefas afiadas e não escreve exploits de prova de conceito. Na prática, prompt de cibersegurança é o caso mais comum de recusa. Se o seu teste esbarrar nisso, é sinal de que o recorte chegou perto demais de um caso sensível, não um bug do modelo.




Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 30min

Blog | Mais populares