SealBox, projendeki parolaları, API anahtarlarını ve kişisel verileri bulur, dosyalardan çıkarıp şifreli bir kasaya kilitler. Claude Code, Copilot ya da Cursor dosyalarını okusa bile sır göremez. Programın çalışırken sırlar yalnızca senin onayınla verilir.
SealBox'ı edin
Motor PyPI'dan, editör eklentisi VS Code Marketplace ya da Open VSX'ten gelir. İkisi de aynı GitHub reposundan derlenir ve aynı sürüm numarasını taşır: 0.3.0.
Motor ve sealbox komutu. Windows, macOS ve Linux'ta Python 3.12+.
VS Code içinde uyarılar, hızlı düzeltmeler, üzerine gelince gösterme ve Kasayla Çalıştır. Motor yoksa kendisi kurar.
Yükle →Aynı eklenti; Cursor, Windsurf, VSCodium ve VS Code tabanlı diğer editörler için.
open-vsx.org →Kaynak kod, .whl ve .vsix dosyaları ekli sürümler, hata bildirimleri ve tartışmalar.
$ pipx install sealbox # motor $ code --install-extension gokhanozdemir.sealbox # VS Code # Cursor / Windsurf / VSCodium: Eklentiler → "SealBox" ara (Open VSX'ten gelir)
Sorun
Bir ajana "şu hatayı düzelt" dediğinde projedeki dosyaları açar ve içeriğini modele gönderir.
.env dosyasındaki ya da koda gömülü bir parola o anda senin bilgisayarından çıkmış olur.
.gitignore bunu durdurmaz, çünkü ajan dosyayı diskten okur.
import os DB_HOST = "db.internal" DB_PASSWORD = "Pr0d-Sup3r-Gizli!" ADMIN_EMAIL = "ayse.yilmaz@firma.com" OWNER_TCKN = "10000000146" API_KEY = "sk_live_51N…8x" def connect(): # parola: Pr0d-Sup3r-Gizli! return f"postgres://admin:{DB_PASSWORD}@…"
Ajan bu dosyayı okuduğunda 4 sır ve 1 kişisel veri modele gider.
import os DB_HOST = "db.internal" DB_PASSWORD = os.environ["DB_PASSWORD"] ADMIN_EMAIL = "__SECURE_EMAIL_8f2c…__" OWNER_TCKN = "__SECURE_TCKN_103d…__" API_KEY = os.environ["API_KEY"] def connect(): # parola: __SECURE_PASSWORD_2cea…__ return f"postgres://admin:{DB_PASSWORD}@…"
Kod aynı şekilde çalışır, ama diskte sır yok. Değerler .sealbox/project.vault içinde şifreli duruyor.
Nasıl çalışır
SealBox araya giren bir proxy değil. Sırları dosyalardan kalıcı olarak çıkarır. Hangi ajan, hangi editör ya da hangi dil olursa olsun diskte okunacak sır kalmaz.
Kurallar ve doğrulayıcılar parolaları, tokenları, API anahtarlarını, e-postaları, TCKN, IBAN ve telefonları bulur. sealbox seal --check hiçbir şeye dokunmadan rapor verir.
Sırlar AES-256-GCM kasaya taşınır. Kodda os.environ["X"] / process.env.X / System.getenv("X") kalır, kişisel veriler __SECURE_..__ etiketine dönüşür.
sealbox exec -- python app.py önce onay penceresi açar. Sırlar yalnızca o çalıştırmaya ortam değişkeni olarak verilir, çıktıdaki sırlar [GİZLİ:..] diye basılır.
Kasa şifreli olduğu için repoya girer. git push ile ekibe gider, onu yalnızca ekipteki GitHub hesapları açabilir.

$ sealbox seal --check .env → .env.sealed: 1 değer kasaya taşınacak (DB_PASSWORD) 3 dosya tarandı (0.0 sn). Diskte karalanmamış sır var. 'sealbox seal' çalıştırın.
Özellikler
Tek bir komut satırı aracı ve onun editör eklentisi. Bulut hesabı, sunucu ya da abonelik gerekmez.
Regex kuralları, Luhn, IBAN mod-97, TCKN algoritması ve entropi kontrolüyle yanlış alarmı azaltır.
.sealbox/project.vault, AES-256-GCM. Anahtar diskte değil, işletim sisteminin kimlik deposunda.
.env desteğiGizli satırlar kasaya taşınır, .env silinir. Yerine yalnızca yer tutucu içeren .env.sealed kalır.
Onayı atlatan bir bayrak bilerek yok. Program sırlara ancak sen pencerede "evet" dediğinde ulaşır.
Programın çıktısında ya da loglarında bilinen bir sır geçerse [GİZLİ:..] olarak basılır.
Kod, dilin kendi ortam değişkeni okumasına çevrilir. JSON/YAML/TOML ayarları karalanır ve raporlanır.
Arkadaşının GitHub'daki SSH anahtarına kilitli bir kopya oluşur. Ayrı bir şifre paylaşmak gerekmez.
Bilgisayar sıfırlanırsa kasayı geri açar. İstersen 3 parçaya bölünür, herhangi 2'si yeter.
Ekip paylaşımı
Kasa repoda şifreli durur. sealbox team add arkadasim dediğinde SealBox
github.com/arkadasim.keys adresinden arkadaşının SSH açık anahtarını alır ve
kasa anahtarının ona özel kilitli bir kopyasını team.json'a yazar.
Arkadaşın git pull yapınca kasa kendi SSH anahtarıyla açılır.
--owner, team promote.team remove sonrası eski üye yeni kasayı açamaz, görmüş olabileceği değerler listelenir.Değerler hiçbir zaman açık hâlde ağdan geçmez; repoya yalnızca şifreli dosyalar girer.
GitHub'da güvende
Sırların GitHub'dan yalnızca şifreli dosya olarak geçer. Her ekip arkadaşının anahtar kopyası kendi GitHub SSH anahtarıyla kilitlidir. Repo sızsa bile elde kalan, kilitli bir kutudur.
Kişi başı bir ed25519 anahtarı, şifreli. SealBox şifresiz anahtarı kabul etmez, çünkü bilgisayardaki her program (ajanlar dahil) onu okuyabilir.
Açık yarısını (id_ed25519.pub) GitHub → Settings → SSH keys altına yapıştır. Zaten herkese açık olması için yapılmıştır: github.com/sen.keys adresinde görünür.
team add o açık anahtarı çeker ve kasa anahtarının bir kopyasını onunla kilitleyip team.json'a yazar. Onu yalnızca eşleşen gizli anahtar açar; o da arkadaşının bilgisayarından hiç çıkmaz.
git push yalnızca şifreli dosyaları gönderir. git pull sonrası ilk çalıştırmada arkadaşının SSH şifresi bir kez sorulur, sonra anahtar onun işletim sistemi deposunda saklanır.
$ ssh-keygen -t ed25519 # sorulunca şifre koy $ gh ssh-key add ~/.ssh/id_ed25519.pub # ya da: GitHub ayarları $ sealbox team init --github my-name $ sealbox team add teammate $ git add .sealbox && git commit -m "vault" && git push
Push yetkisi olup anahtarı olmayan biri ne bir değeri okuyabilir ne de team.json'a sahte üye ekleyebilir.
Dosyayı temizlemek eski commit'leri temizlemez. sealbox history her commit'te kasadaki değerleri ve kodlanmış hallerini arar; değeri değil, yalnızca ad, commit ve dosyayı söyler. Push'lanmış olanları işaretler: onları yenile.
sealbox hook install, kasadaki bir değeri içeren commit'i durdurur ve dosya:satır gösterir. Herkes kendi bilgisayarına kurar, repoya girmez.
Her sürüm GitHub Actions'ta test edilir, sonra PyPI'a güvenilir yayınlama (trusted publishing) ile gönderilir; GitHub'da hiçbir API anahtarı saklanmaz. Eklenti, ancak PyPI başarılı olunca Marketplace ve Open VSX'e çıkar.
Kurtarma
Windows sıfırlandı, yeni bilgisayar aldın ya da profil bozuldu. Kasa anahtarı tek bir yerde dursaydı kasa sonsuza kadar kilitli kalırdı. SealBox'ta kasa anahtarının birden fazla kilidi var. Biri giderse ötekiyle açarsın.
recovery setup: 128 bitlik kurtarma kodu. Yalnızca pencerede gösterilir, terminale yazılmaz.recovery shares: kodu 3 parçaya böler (Shamir). Herhangi 2 parça yeter.recovery export: USB ya da bulut için kurtarma kiti. Kod olmadan açılmaz.recovery restore: kod, 2 parça ya da kit ile anahtarı geri getirir.Zarf şifreleme: tek bir kasa anahtarı (DEK), birden fazla kilitle saklanır.
VS Code eklentisi
Eklenti, sealbox komutunun editördeki kumandası. Açık sırları sarı çizer, ampulle kasaya taşır, üzerine gelince onaylı gösterir.
Dosya açılınca ya da kaydedilince taranır, sır olan yer sarı çizilir.
Ampul → "Bu dosyadaki sırları kasaya taşı".
__SECURE_..__ veya os.environ["X"] üzerinde onaylı "Değeri göster".
🔒 3 sır kasada · 👥 2 kişi. Kurtarma yoksa ⚠ yedeksiz der.
Programı terminalde sealbox exec ile başlatır. Düz çalıştırma KeyError verirse bunu önerir.
Menüden ekip kur, @kullanıcı ekle, kurtarma kodu üret, kitle geri aç.
Neden SealBox?
Sırları .env'de tutup .gitignore'a eklemek, git'e karşı korur. Ama bugün dosyaları okuyan bir de yapay zekâ ajanı var.
| Koda gömülü sır | .env + .gitignore | SealBox | |
|---|---|---|---|
| Ajan dosyayı okuyunca sırrı görür mü? | Evet | Evet, dosya diskte açık | Hayır, diskte sır yok |
| Sırları kendisi bulur mu? | Hayır | Hayır | Evet, kod, ayar dosyası ve .env |
| Unutulan açık sırrı haber verir mi? | Hayır | Hayır | Evet, seal --check, CI ve editör uyarısı |
| Ekiple paylaşım | Repoda açık | Elle, mesajla ya da e-postayla | git push, GitHub SSH anahtarlarıyla |
| Anahtar kaybolursa | — | Dosya gittiyse gitti | Kurtarma kodu, 2-of-3 parça, kit |
| Program çıktısında sır sızarsa | Görünür | Görünür | [GİZLİ:..] diye basılır |
| Kişisel veriler (TCKN, e-posta, IBAN) | Açık | Açık | Karalanır, gerekirse çalışırken verilir |
| Daha önce commit edilmiş sır | Geçmişte kalır | Geçmişte kalır | sealbox history bulur; commit kancası bir sonrakini durdurur |
Dürüst sınırlar: regex her sırrı bulamaz, kasıtlı kötü niyetli bir yerel program kimlik deposunu okumaya uğraşabilir. Ayrıntılar dokümantasyonda.
Kaynaklar
Adım adım rehberler yeni başlayanlar için. Dokümantasyonda her komutun tüm seçenekleri var.
Başlarken
Bunları proje klasöründe çalıştır. Her adım sıradakini söyler; takılırsan sealbox status her zaman yanında.
Aracı kur, sonra init projene baksın. Hiçbir dosyayı değiştirmez, sıradaki adımları listeler.
$ pip install sealbox $ cd projem $ sealbox init
Parolalar ve anahtarlar şifreli kasaya taşınır; kodun onları ortam değişkeninden okur.
İlk projeni mühürle →$ sealbox seal --check # önce bak $ sealbox seal
Windows sıfırlandığı gün için yedek anahtar. Bir kez, pencerede gösterilir; terminale asla yazılmaz.
Anahtarı kaybedersen →$ sealbox recovery setup $ sealbox recovery shares # isteğe bağlı
Programın sırları yalnızca bu çalıştırmada, sen İzin ver deyince alır. Kasayı commit edip ekibine push'la.
Kasayla çalıştır →$ sealbox exec -- python app.py $ git add .sealbox && git commit -m "kasa"
Python 3.12+ yeterli. Windows, macOS ve Linux; mesajlar Türkçe ya da İngilizce.