# Security Policy / Política de Segurança
## Supported Versions / Versões Suportadas
| Latest (crates.io) | ✅ Yes / Sim |
| Older releases | ❌ No / Não |
Only the latest published version on [crates.io](https://crates.io/crates/context7-cli) receives security fixes. Users are encouraged to keep `context7-cli` up to date via `cargo install context7-cli --force`.
---
## Reporting a Vulnerability / Reportando uma Vulnerabilidade
### EN — Reporting
**Please do not report security vulnerabilities through public GitHub issues.**
**Primary channel (preferred):** GitHub Security Advisories
→ [https://github.com/daniloaguiarbr/context7-cli/security/advisories/new](https://github.com/daniloaguiarbr/context7-cli/security/advisories/new)
**Alternate channel:** Email — daniloaguiarbr@pm.me
#### Response timeline
| Acknowledgment of receipt | Within 48 hours |
| Status update | Within 7 days |
| Fix or mitigation | Within 30 days (severity-dependent) |
#### What to include in your report
- A clear description of the vulnerability
- Step-by-step instructions to reproduce it
- Potential impact and attack vector
- Affected version(s)
- Any suggested fix (optional, but appreciated)
We will credit you in the release notes unless you prefer to remain anonymous.
---
### PT — Reportando
**Por favor, não reporte vulnerabilidades de segurança através de issues públicas no GitHub.**
**Canal primário (preferido):** GitHub Security Advisories
→ [https://github.com/daniloaguiarbr/context7-cli/security/advisories/new](https://github.com/daniloaguiarbr/context7-cli/security/advisories/new)
**Canal alternativo:** E-mail — daniloaguiarbr@pm.me
#### Cronograma de resposta
| Confirmação de recebimento | Em até 48 horas |
| Atualização de status | Em até 7 dias |
| Correção ou mitigação | Em até 30 dias (dependendo da gravidade) |
#### O que incluir no relatório
- Descrição clara da vulnerabilidade
- Instruções passo a passo para reproduzi-la
- Impacto potencial e vetor de ataque
- Versão(ões) afetada(s)
- Sugestão de correção (opcional, mas bem-vinda)
Você será creditado nas notas de versão, a menos que prefira permanecer anônimo.
---
## Security Measures / Medidas de Segurança
### EN
This project applies the following security practices:
- **`cargo audit`** — dependencies are checked against the [RustSec Advisory Database](https://rustsec.org/) on every CI run.
- **`cargo deny`** — license compatibility, supply-chain integrity, and banned crates are enforced via `deny.toml`.
- **Dependabot** — automated dependency update pull requests are enabled (`.github/dependabot.yml`) to keep the dependency graph current.
- **API key storage** — keys are stored locally in the XDG config directory (`~/.config/context7/` or `$CONTEXT7_HOME`). They are never logged, printed to stdout, or transmitted anywhere other than the official Context7 API endpoint over HTTPS.
- **No secrets in source** — the repository contains no hardcoded credentials, tokens, or private keys.
- **Zeroize memory** — API keys use the `zeroize` crate with `#[derive(ZeroizeOnDrop)]`. Memory holding key material is automatically zeroed when the value is dropped, preventing extraction from memory dumps or core files.
- **ChaveApi newtype** — the `ChaveApi` newtype masks keys in both `Debug` and `Display` trait implementations. Keys never leak to logs, stack traces, or error messages.
- **Windows reserved filename validation** — `CONTEXT7_HOME` values are validated against Windows reserved filenames (`CON`, `PRN`, `NUL`, `AUX`, `COM1`..`COM9`, `LPT1`..`LPT9`) to prevent path injection attacks on Windows systems.
- **Unicode NFC normalization** — paths are normalized to Unicode NFC form to prevent path confusion attacks on macOS HFS+ and other filesystems where different Unicode representations can resolve to the same path.
### PT
Este projeto aplica as seguintes práticas de segurança:
- **`cargo audit`** — as dependências são verificadas contra o [RustSec Advisory Database](https://rustsec.org/) em cada execução de CI.
- **`cargo deny`** — compatibilidade de licenças, integridade da cadeia de suprimentos e crates banidas são verificadas via `deny.toml`.
- **Dependabot** — pull requests automáticos de atualização de dependências estão habilitados (`.github/dependabot.yml`) para manter o grafo de dependências atualizado.
- **Armazenamento de chaves de API** — as chaves são armazenadas localmente no diretório de configuração XDG (`~/.config/context7/` ou `$CONTEXT7_HOME`). Elas nunca são registradas em logs, impressas em stdout ou transmitidas para qualquer lugar além do endpoint oficial da Context7 API via HTTPS.
- **Sem segredos no código-fonte** — o repositório não contém credenciais, tokens ou chaves privadas embutidas no código.
- **Zeroize de memória** — as chaves de API usam o crate `zeroize` com `#[derive(ZeroizeOnDrop)]`. A memória contendo o material da chave é automaticamente zerada quando o valor é dropado, prevenindo extração a partir de dumps de memória ou core files.
- **Newtype ChaveApi** — o newtype `ChaveApi` mascara chaves nas implementações dos traits `Debug` e `Display`. Chaves nunca vazam para logs, stack traces ou mensagens de erro.
- **Validação de nomes reservados do Windows** — valores de `CONTEXT7_HOME` são validados contra nomes de arquivo reservados do Windows (`CON`, `PRN`, `NUL`, `AUX`, `COM1`..`COM9`, `LPT1`..`LPT9`) para prevenir ataques de injeção de caminho em sistemas Windows.
- **Normalização Unicode NFC** — caminhos são normalizados para a forma Unicode NFC para prevenir ataques de confusão de caminho no macOS HFS+ e outros sistemas de arquivos onde representações Unicode diferentes podem resolver para o mesmo caminho.
---
## License / Licença
This project is licensed under either of **MIT** or **Apache-2.0** at your option.
Este projeto é licenciado sob **MIT** ou **Apache-2.0** à sua escolha.