Secrets

Secrets são pares chave-valor que guardam dados sensíveis, como chaves de API, tokens e senhas. Em vez de deixar valores fixos dentro dos seus workflows, você os guarda como secrets e os referencia pelo nome em tempo de execução.

Gerenciando secrets

Para gerenciar secrets, abra as Settings do seu workspace e vá até a aba Secrets.

Os secrets ficam organizados em duas seções:

  • Workspace — compartilhados com todos os membros do seu workspace
  • Personal — privados, só seus

Membros externos do workspace contam como membros do workspace para os secrets com escopo de workspace. Eles podem usar os secrets do workspace conforme o nível de permissão que têm nele, mesmo não sendo membros da sua organização.

Adicionando um secret

Digite o nome da chave (por exemplo, OPENAI_API_KEY) na coluna Key e o valor na coluna Value, na última linha vazia. Uma nova linha vazia aparece automaticamente conforme você digita. Os valores existentes ficam mascarados por padrão.

Quando terminar, clique em Save para gravar todas as alterações.

As chaves só podem usar letras, números e underscores — sem espaços nem caracteres especiais.

Importação em massa

Você pode preencher vários secrets de uma vez colando conteúdo em formato .env em qualquer campo de chave ou de valor. O parser aceita pares KEY=VALUE padrão, export KEY=VALUE, valores entre aspas e comentários inline.

Editando e excluindo

Clique direto em qualquer célula de chave ou valor para editá-la. Para excluir um secret, clique no ícone de lixeira na linha dele e salve.

Usando secrets em workflows

Para referenciar um secret em qualquer campo de entrada, digite {{ para abrir o dropdown de variáveis. Seus secrets disponíveis aparecem agrupados por escopo (primeiro workspace, depois personal).

Selecione o secret que você quer usar. A referência aparece destacada em azul e é resolvida para o valor real em tempo de execução.

Proteção nos logs de execução

Quando um secret salvo é substituído com sucesso por uma referência {{KEY}}, o Studio mascara as ocorrências exatas (sensíveis a maiúsculas e minúsculas) do valor resolvido em todo conteúdo que vai para os logs. Isso inclui a exibição ao vivo do log do block no editor, a entrada e a saída no Logs Overview, os traces de execução armazenados, as respostas da API de leitura de logs e a saída de Get Run Details do block Logs. As entradas, saídas e erros dos spans de Function e Agent, o thinking do Agent e os argumentos, resultados e erros das chamadas de ferramenta do Agent também são protegidos. A substituição normalmente aparece como {{KEY}}.

A resolução dos secrets e o comportamento funcional do workflow não mudam: blocks, ferramentas e etapas seguintes recebem o valor real de execução. Os dados funcionais de execução armazenados, as respostas de execução do workflow, os streams, os callbacks, o estado dos blocks e os snapshots não são reescritos. As visualizações e as APIs de leitura de logs recebem uma cópia protegida separada, então o Workflow Input e o Workflow Output do Logs Overview aparecem mascarados sem alterar o resultado real do workflow. As requisições ao modelo recebem outra projeção protegida: os valores exatos dos secrets conhecidos pela execução são trocados por {{KEY}} antes de qualquer mensagem, prompt, argumento de ferramenta ou continuação de ferramenta visível ao modelo sair do Studio.

O mascaramento nos logs de execução só é ativado quando o Studio resolve com sucesso um valor de Settings → Secrets por meio de {{KEY}}. Um literal fixo no código, uma leitura direta de environmentVariables['KEY'] ou uma leitura de shell $KEY não ativam o mascaramento por si só. A projeção enviada ao modelo também consulta o catálogo de secrets autorizados da execução, incluindo leituras diretas, mas as duas proteções só reconhecem valores exatos. Versões codificadas, com hash, fragmentadas ou transformadas de outra forma não são reconhecidas. Não retorne nem imprima secrets de propósito.

Execução de código no Chat

As ferramentas Function e de execução de código do Chat só recebem um secret salvo quando o código contém explicitamente uma referência {{KEY}} válida. Acesso direto a environmentVariables.KEY, shell $KEY, nomes dinâmicos, literais e secrets configurados mas não usados não montam nenhum valor. A execução de código exige acesso de escrita ao workspace, e quem chama também precisa ter permissão para ver o valor bruto: seus próprios secrets Personal, qualquer secret em que você seja Admin de credencial e os secrets de Workspace quando você é admin do workspace. Quem é Member de credencial continua podendo usar os secrets compartilhados pela resolução normal de workflows e ferramentas, mas não pode montar o texto puro deles em código arbitrário do Chat.

As superfícies headless usam a configuração Secret access que estiver salva:

  • Block Studio Chat — em Show additional fields
  • Scheduled Tasks — no modal da tarefa
  • Inbox — em Settings → Inbox → Secrets

Escolha All secrets ou Selected secrets. Configurações existentes assumem All secrets por compatibilidade. Mesmo All secrets significa apenas os secrets referenciados explicitamente com {{KEY}} que o ator da execução pode ver; nunca injeta o ambiente inteiro. Mensagens no Inbox vindas de remetentes externos permitidos não recebem acesso a secrets brutos.

O código recebe o valor real autorizado em tempo de execução. Antes de qualquer resultado de ferramenta visível ao Chat ser devolvido, as ocorrências exatas dos valores de secrets ativados são trocadas por {{KEY}}; efeitos colaterais locais e resultados de execução não são reescritos. Valores codificados, com hash, com URL-encode, transformados de outra forma ou exfiltrados pela rede não podem ser inferidos e mascarados com segurança, então o código não deve retornar, transformar, imprimir ou transmitir secrets a destinos indevidos de propósito.

Detalhes do secret

Clique em Details em qualquer linha de secret para abrir a visão de detalhes.

A partir daí você pode:

  • Editar o Display Name e a Description
  • Gerenciar os Members — convidar colegas por e-mail e atribuir a eles o papel Admin ou Member

Clique em Save para aplicar as alterações ou em Back para voltar à lista.

Workspace vs. Personal

WorkspacePersonal
VisibilidadeTodos os membros do workspace, incluindo membros externosSó você
Uso em workflowsQualquer membro pode usarSó você pode usar
Ideal paraWorkflows de produção, serviços compartilhadosTestes, chaves de API pessoais
Quem pode editarAdmins do workspaceSó você

Quando um secret de workspace e um secret pessoal têm o mesmo nome de chave, o secret de workspace tem prioridade.

Ordem de resolução

Quando um workflow é executado, os secrets são resolvidos nesta ordem:

  1. Os secrets de workspace são verificados primeiro e sempre resolvem em relação à identidade que está executando o workflow — quem chamou, quando é possível identificar, ou a conta de cobrança do workspace, caso contrário. Uma execução só vê os secrets de workspace que aquela identidade pode usar.
  2. Os secrets pessoais entram como fallback, vindos de qualquer identidade que estiver executando:
Execução iniciada porOs secrets pessoais vêm de
Clique em Run ou uma chave de API pessoalA pessoa que executou
Uma chave de API do workspace, um agendamento ou um webhookO owner do workflow
Uma URL pública de API sem autenticaçãoNinguém — secrets pessoais não são resolvidos

O owner do workflow é o fallback apenas quando ninguém pode ser identificado, mas alguém do workspace configurou o trigger, já que esses workflows normalmente são construídos com as chaves do próprio owner. Uma URL pública pode ser chamada por qualquer pessoa, então ela nunca toma emprestadas as chaves de alguém — coloque em Workspace todos os secrets de que um workflow desses precisa.

Boas práticas

  • Use secrets de workspace em produção, para que os workflows funcionem independentemente de quem os dispara
  • Use secrets pessoais em desenvolvimento, para manter as chaves de teste separadas
  • Dê nomes descritivos às chaves — STRIPE_SECRET_KEY em vez de KEY1
  • Nunca deixe secrets fixos nos campos de entrada do workflow — sempre use referências {{KEY}}

Common Questions

Sim. Os valores salvos em Secrets são criptografados antes de serem gravados no banco de dados.
Sim. Os dados funcionais do workflow não são reescritos, então o valor bruto ainda pode chegar aos blocks e ferramentas seguintes e aparecer em respostas de execução do workflow, streams ou callbacks se o seu workflow retornar ou imprimir esse valor de propósito. As visualizações e as APIs de leitura de logs recebem uma cópia protegida depois de uma resolução bem-sucedida de {{KEY}}. Antes de o conteúdo ser enviado a um modelo, os valores exatos do catálogo de secrets autorizados da execução são trocados por placeholders, mas valores codificados ou transformados de outra forma ficam fora dessa proteção.
Entre os secrets disponíveis para o ator da execução, o secret de workspace tem prioridade e o pessoal é o fallback. Um secret de workspace inacessível não encobre um valor pessoal autorizado.
Quem estiver executando, quando isso pode ser identificado. Clicar em Run ou chamar com uma chave de API pessoal usa os secrets pessoais daquela pessoa. Uma chave de API do workspace, um agendamento ou um webhook não têm um chamador identificável, então o fallback são os secrets do owner do workflow — esses triggers são configurados dentro do workspace e o workflow normalmente é construído com as chaves do próprio owner. Uma URL pública de API sem autenticação pode ser chamada por qualquer pessoa, então nenhum secret pessoal é resolvido — esses workflows rodam apenas com secrets de workspace.
Sim. Cole conteúdo em formato .env (KEY=VALUE) em qualquer campo de chave ou valor e os secrets são preenchidos automaticamente. O parser aceita export KEY=VALUE, valores entre aspas e comentários inline.
O workflow falha em qualquer block que referencie o secret excluído durante a execução, porque o valor não pode ser resolvido. Atualize todas as referências antes de excluir um secret.