IO modelo de custódia

Nada sai.
Nada reporta para casa.

O SQAI roda onde seus dados vivem. No momento da consulta não há chamada de rede a interceptar, nenhum serviço retendo suas linhas, nenhuma telemetria. Este documento contabiliza cada byte que trafega pela rede — há exatamente dois movimentos, e nenhum deles é o seu dado.

Folha de custódiaSQAI · modo local
contract_hash sha256:79f1c5a6c716…be9a1Emitido para: seu processo
  • Suas linhas

    Lidas dentro do seu processo. Nunca copiadas, nunca enviadas, nunca retidas por ninguém além de você.

    nunca
  • Planos e resultados

    Validados e executados em processo. Os resultados ficam em um armazenamento local delimitado e expiram após 15 minutos.

    nunca
  • Telemetria

    Não existe. Nenhuma chamada de analytics, nenhum reporter de falhas, nenhuma casa para reportar.

    nunca
  • Pacote de runtime

    Código do engine, obtido uma vez do Cloudflare R2 e verificado antes de qualquer arquivo ser gravado. O código entra; as linhas nunca saem.

    uma vez · entrada · assinado
  • Login do dispositivo

    Opcional. Move um token de licença assinado entre sua máquina e o serviço de conta — nunca seus dados.

    opcional · somente token

Nenhuma rede no momento da consulta. Corte a conexão após a instalação e cada consulta ainda responde.

Somente leitura não é uma configuração.
É a forma da ferramenta.

4.574 capacidades expostas · todas de leitura · nenhum caminho de escrita a configurar incorretamente

IIIO único download

Seis verificações antes de um arquivo chegar.

O pacote de runtime é a única coisa que o SQAI busca — código do engine do Cloudflare R2, tratado como hostil até prova em contrário. A verificação ocorre antes da extração, continua arquivo por arquivo, e a instalação é atômica.

  1. 01

    Uma chave aceita

    Os releases são assinados com RS256 usando uma única chave RSA-4096. Uma chave verifica; nada mais é confiável.

  2. 02

    Verificar antes de extrair

    A assinatura é verificada sobre o manifesto antes de qualquer arquivo ser descompactado. Um pacote adulterado ou não assinado nunca chega a esse ponto.

  3. 03

    Segurança de schema e caminhos

    O manifesto deve ser analisado conforme o schema esperado, e cada caminho listado deve ser resolvido dentro do diretório raiz de instalação.

  4. 04

    sha256 por artefato

    Cada arquivo é hasheado e comparado com o manifesto assinado. Um único byte divergente invalida toda a instalação.

  5. 05

    Não listado ou symlink — rejeitado

    Um arquivo não listado no manifesto, ou qualquer symlink, rejeita o pacote imediatamente.

  6. 06

    Instalação atômica, rollback com piso

    A extração ocorre em um diretório temporário e é movida para o lugar definitivo com um único rename atômico. Versões abaixo do piso aceito são recusadas como rollback_protected.

O artefato em inspeçãoruntime_bundle 0.1.0sha256 4d64142e4c1ff63d299cfc8b172fdf97cb59169b545e1e02978e678a632ce6e1MIN_ACCEPTED_RUNTIME_VERSION 0.1.0 · below → rollback_protected

IVChaves e higiene de erros

Superfícies pequenas, mantidas pequenas.

A chave do dispositivo

localização
~/.sqai — no seu diretório home, em nenhum lugar do sistema
permissões
modo de arquivo 600 — legível somente por você
emissão
login de dispositivo opcional (RFC 8628 device code)
o que trafega
um token de licença assinado — nunca seus dados

O que o modelo vê

Lançado no seu processoENOENT: no such file or directory — /Users/dana/finance/q3-actuals.csv
Entregue ao modeloENOENT: no such file or directory

sanitizeMessage remove caminhos absolutos de todo erro visível ao modelo. O layout do seu sistema de arquivos nunca faz parte do contexto do modelo.

VO repositório

Um handle que não prova nada.

Resultados grandes ficam atrás de um handle em vez de sobrecarregar o contexto do modelo. O handle é projetado para ser inútil a qualquer pessoa que não seja o tenant emissor.

result_id
16 bytes aleatórios, base64url — impossível de adivinhar, sem vínculo com qualquer consulta ou tenant
autorização
escopo por tenant — somente o tenant emissor pode resgatá-lo
tenant errado
result_not_found — indistinguível de um handle que nunca existiu
tempo de vida
TTL de 15 minutos · ≤256 resultados · 64 MB no total · 16 MB por tenant

result_id = base64url(randomBytes(16))

tenant emissor→ ok
qualquer outro tenant→ result_not_found

Não proibido — não encontrado. A existência nunca é revelada.

VIO runbook de air-gap

Executa onde o cabo foi cortado.

O plano de consultas é offline por design; apenas o runtime de computação é obtido remotamente. Para operar totalmente desconectado, receba o pacote você mesmo — o verificador não se importa de onde vieram os bytes.

  1. 01

    Desativar instalação automática

    O SQAI nunca buscará o runtime de forma implícita.

    $export SQAI_RUNTIME_AUTO_INSTALL=0
  2. 02

    Transportar o pacote manualmente

    Obtenha o pacote assinado em uma máquina conectada e transfira-o conforme sua própria política de transferência.

  3. 03

    Instalar a partir do arquivo

    Todas as seis verificações são executadas sobre o arquivo local — mesma assinatura, mesmo manifesto, mesmos hashes por artefato.

    $sqai runtime install --from-file <bundle>
  4. 04

    Verificar no lugar

    Revalide o runtime instalado contra a única chave de release aceita, a qualquer momento.

    $sqai runtime verify

Após a instalação: zero de rede. Consultas, verificações de política e hashes de proveniência são computados localmente.

VIIAs perguntas de revisão

Perguntado em toda revisão de segurança.

O que exatamente sai da minha máquina?

No momento da consulta, nada. Ao longo da vida de uma instalação, duas coisas trafegam pela rede: um pacote de runtime assinado recebido do Cloudflare R2 (código do motor, não linhas de dados) e — somente se você optar pelo login de dispositivo — um token de licença assinado. Não há telemetria.

Somente leitura é apenas um sinalizador que alguém poderia alterar?

Não. Um sinalizador de somente leitura em uma conexão de banco de dados é uma promessa; SQAI é uma superfície ausente. Todas as 4.574 capacidades expostas são leituras — não há caminho de escrita, DDL ou eval a proteger — e a saída de emergência (getUnsafeRuntime) nunca é acessível por um modelo.

O modelo pode ampliar seu próprio acesso?

Não. A política é fixada em código no momento de createSQAI() e verificada em processo antes da execução. A entrada de ferramenta preenchida pelo modelo não carrega campos allowed*, e nomear uma capacidade fora da lista de permissões lança unsupported_operation.

O SQAI funciona em ambiente isolado (air-gapped)?

Sim. Defina SQAI_RUNTIME_AUTO_INSTALL=0, transfira o pacote assinado manualmente e instale com sqai runtime install --from-file. A mesma cadeia de verificação é executada contra o arquivo, e o plano de consultas permanece totalmente offline.

Uma mensagem de erro pode vazar meus caminhos de arquivo para o modelo?

Não. sanitizeMessage remove caminhos absolutos de todo erro visível ao modelo, de modo que ele nunca descobre o layout do seu sistema de arquivos.

Próximo passo

Traga sua revisão de segurança.

Percorra o questionário conosco — custódia, assinatura, política, air-gap — cada resposta rastreável ao código.