تصور کنید یک عامل هوش مصنوعی در محیط کدنویسی شما، بدون اینکه متوجه شوید، تمام کلیدهای AWS و توکنهای API را از فایلهای تنظیمات بردارد و به سروری خارجی بفرستد. این کابوس امنیتی اکنون با jitpass به یک مسئله قابل حل تبدیل شده است. محیط توسعه محلی شما احتمالاً در حال نشت اسرار به هر پردازشی است که روی ماشین شما در حال اجراست. jitpass این مشکل را با انتقال اعتبارنامههای متنی ساده — مانند فایلهای .env و کلیدهای AWS — به یک خزانه رمزگذاریشده که برای باز شدن به اثر انگشت نیاز دارد، حل میکند.
بسیاری از توسعهدهندگان توکنهای API و رمزهای عبور پایگاه داده را در فایلهای متنی ساده در دایرکتوریهای Home خود ذخیره میکنند. این اسرار در فایلهای .env، مسیر ~/.aws/credentials، خروجیهای ~/.zshrc، توکنهای .npmrc و پیکربندیهای MCP زندگی میکنند. این وضعیت یک حفره امنیتی عظیم ایجاد میکند که در آن هر چیزی که با دسترسی شما اجرا شود، میتواند آنها را بخواند. یک دستور curl | sh بدخواهانه، یک npm install مشکوک، یا یکی از عاملهای هوش مصنوعی که اکنون در ویرایشگر شما با دسترسی کامل اجرا میشوند، میتوانند هویت شما را به خطر بیندازند. به نقل از مستندات پروژه، jitpass این ریسک را با جایگزینی مقادیر واقعی با مقادیر جعلی (Decoy) روی دیسک از بین میبرد. این رویکرد در راستای تلاشهای گستردهتر برای حذف اسرار از محیطهای متنی است، مشابه آنچه در رویکرد Lokalite برای مدیریت امن اسرار عاملهای هوش مصنوعی مشاهده میکنیم.
مکانیسم تزریق در لحظه (Just-in-Time)
این ابزار از مدل تزریق «در لحظه» یا Just-in-Time (JIT) استفاده میکند؛ یعنی به جای اینکه ابزارهای شما فایلی را از روی دیسک بخوانند، مقدار مورد نظر را از jitpass درخواست میکنند. رمز واقعی تنها در حافظه (In-memory) و فقط برای آن پردازش خاصی که درخواست داده است، و آن هم تنها پس از یک تایید بیومتریک ظاهر میشود.

این معماری دو دروازه امنیتی مجزا ایجاد میکند. دروازه اول، خزانه را برای یک جلسه (Session) باز میکند. این اتفاق اولین باری میافتد که شما پس از قفل شدن، از jit استفاده میکنید. یک بار تایید Touch ID، خزانه را برای ۵ دقیقه فعالیت باز نگه میدارد و در هر صورت، فارغ از اینکه چقدر مشغول باشید، هرگز بیش از ۸ ساعت باز نخواهد ماند.
لایه دوم، تأییدیهٔ هر ابزار است. حتی اگر خزانه باز باشد، اولین بار که ابزاری خاص — مانند AWS CLI — درخواست اعتبارنامه دهد، jitpass دوباره تایید Touch ID میخواهد. این امر از این جلوگیری میکند که برنامهای که شما عمداً اجرا نکردهاید، در حالی که خزانه باز است، بهطور مخفیانه از کلیدهای شما استفاده کند. برای مثال، اگر دستور aws s3 ls را اجرا کنید، ابتدا با دروازه ۱ برای باز کردن خزانه و سپس با دروازه ۲ برای تایید اعتبارنامه AWS مواجه میشوید. فراخوانیهای بعدی مانند aws s3 cp در همان جلسه به هیچ تاییدیه نیاز ندارند. اما اگر سپس terraform apply را اجرا کنید، jitpass دوباره دروازه ۲ را فعال میکند زیرا این یک ابزار متفاوت است.
کاربرانی که احساس میکنند دروازه دوم بیش از حد تکرار میشود، میتوانند آن را با دستور jit service consent off غیرفعال کنند. این کار اجازه میدهد ابزارها در حالی که خزانه باز است، بهطور بیصدا مقادیر را دریافت کنند. فعال کردن مجدد آن نیازمند دستور jit service consent on است که خود به تایید Touch ID نیاز دارد. برای کسانی که وظایف پیچیدهای را شروع میکنند که به چندین اعتبارنامه بهطور همزمان نیاز دارد، دستور jit run --trust -- terraform apply به کاربر اجازه میدهد تمام ابزارهای آن اجرا را با یک اشاره تایید کند.
استقرار و مهاجرت
نصب این ابزار روی مکهای Apple Silicon از طریق Homebrew با دستور brew install jitpass/tap/jitpass یا از طریق یک tarball مستقیم با دستور curl -sL https://dl.jitpass.com/jitpass/jit/releases/latest/download/jitpass_darwin_arm64.tar.gz | tar -xz انجام میشود. برای کسانی که از مکهای اینتل استفاده میکنند، ابزار باید از منبع (Source) با استفاده از دستور go install github.com/jitpass/jit/cmd/jit@latest ساخته شود.
اگر کاربر از نصب tarball به Homebrew تغییر وضعیت دهد، باید نسخه قدیمی را با دستور sudo rm /usr/local/bin/jit حذف کند تا از وجود دو نسخه در PATH و بهروزرسانی جداگانه آنها جلوگیری شود؛ موضوعی که توسط jit doctor شناسایی و گزارش میشود.
این نرمافزار با Developer ID امضا شده و توسط اپل Notarize شده است تا از هشدارهای Gatekeeper عبور کند. دانلودهای Homebrew قرنطینه شده و در برابر بلیت notarization بررسی میشوند، در حالی که curl و go install پرچم قرنطینه را تنظیم نمیکنند. کاربران میتوانند نصب خود را با اجرای jit doctor تایید کنند که شناسه امضا شده CZC6BH93GJ را گزارش میکند. بهروزرسانیها از طریق brew upgrade jitpass یا دستور تایید شده jit upgrade انجام میشود که پیش از راهاندازی مجدد سرویس، هم امضای Developer-ID و هم checksum را بررسی میکند. همچنین Homebrew بهطور خودکار تکمیلکننده شل (shell completion) را نصب میکند؛ کسانی که از tarball یا منبع استفاده میکنند باید دستور echo 'source <(jit completion zsh)' >> ~/.zshrc && exec zsh را اضافه کنند تا تکمیل دستورات، فلگها و مسیرهای خزانه فعال شود.
کاربران میتوانند ماشین خود را از طریق یک فرآیند مهاجرت ساختاریافته ایمن کنند:
jit scan: یک بررسی فقط-خواندنی از دایرکتوری Home برای شناسایی اسرار لو رفته. این دستور هیچ مقدار واقعی را چاپ نمیکند و هیچ فایلی را تغییر نمیدهد. یافتهها را به دو دسته تقسیم میکند: مواردی که jit میتواند محافظت کند (با یک دستور) و مواردی که کاربر باید بهصورت دستی اصلاح کند. برای مثال، یک اسکن ممکن است ۷ راز را نشان دهد که ۵ مورد (۷۱٪) توسط jit محافظت میشوند و ۲ مورد (۲۹٪) را فقط کاربر میتواند حل کند، مانند رمز عبور دیتابیس Production که در دو فایل یافت شده و باید تغییر کرده و حذف شود.jit vault init: ایجاد خزانه رمزگذاریشده با یک کلید اصلی که در macOS login keychain ذخیره میشود.jit migrate: اجرای برنامه اصلاحی. این دستور برنامه را نمایش داده، تایید[y/N]میخواهد و به یک بار Touch ID نیاز دارد. این عملیات میتواند در سطح کل ماشین یا برای یک پروژه خاص (مثلاًjit migrate ~/code/myapp) اجرا شود. پیشنمایش تغییرات را میتوان ابتدا باjit migrate --dry-runمشاهده کرد.
ادغام با ابزارهای خاص
همه ابزارها به یک شکل با jitpass تعامل ندارند. قانون اصلی این است که آیا ابزار میتواند خودش از jitpass درخواست رمز کند یا خیر.
ادغام مستقیم (بدون نیاز به پیشوند):
- AWS و Terraform: با مهاجرت
~/.aws/credentialsکلیدها به خزانه منتقل میشوند. ابزارهایی که ازcredential_processاستفاده میکنند، مقادیر را بدون نیاز به فلگهای اضافی در لحظه دریافت میکنند. دستوری مانندaws s3 lsبهطور خودکار از خزانه پاسخ میگیرد. - GCP: مهاجرت
~/.config/gcloud/application_default_credentials.jsonبه ارائهدهنده گوگل اجازه میدهد ADC را پس از تایید Touch ID بخواند. - خروجیهای شل (Shell Exports): مهاجرت
~/.zshrcیک هوک تکخطی باقی میگذارد تا شلهای جدید متغیرها را بهطور خودکار داشته باشند. اسکریپتهایی مانند./deploy.shکه این متغیرها را میخوانند، بدون تغییر کار میکنند. - تاریخچه شل (Shell History): دستور
jit migrate ~/.zsh_historyاسرار را به خزانه منتقل میکند در حالی که دستورات را حفظ میکند.jit guard historyاز ثبت اسرار آینده در zsh جلوگیری میکند.
ادغام مبتنی بر پردازش:
- Docker: مهاجرت
~/.docker/config.jsonورود به رجیستریها را به خزانه منتقل میکند. کاربران دستورjit run -- docker compose upرا اجرا میکنند تا مقادیر برای آن اجرای خاص تزریق شوند.docker login ghcr.ioهمچنان کار میکند زیرا helper توکن را در خزانه ذخیره میکند. - پیکربندیهای جهانی: ابزارهایی که
.npmrcیا.netrcیا فایلهای sops را در زمان اجرا میخوانند، به پیشوندjit runنیاز دارند. کاربران میتوانند برای گیتینگ صریح در CI یا اسکریپتهایی که هیچ پرومپتی در دسترس نیست، ازjit run --with <name>استفاده کنند.
CLIهای بستهبندی شده (Wrapped):
برای CLIهایی که توکنهای داخلی خود را دارند، مانند GitHub CLI (gh)، Stripe یا glab، کاربران میتوانند از jit wrap gh استفاده کنند. این یک تنظیم یکباره است؛ پس از wrap شدن، کاربر مانند همیشه gh را تایپ میکند و توکن در هر فراخوانی تزریق میشود. هر ابزاری که صراحتاً در کاتالوگ پشتیبانی شده نباشد، همچنان میتواند با jit wrap add بستهبندی شود.

مدیریت عاملهای هوش مصنوعی و اتوماسیون
یکی از حیاتیترین قابلیتها، «اجازهٔ پردازش» (Process Grant) است. چون عاملهای هوش مصنوعی که شبانه کار میکنند، بیلدهای طولانی یا کارهای زمانبندی شده نمیتوانند به درخواست Touch ID پاسخ دهند، اجرای آنها در صورت قفل شدن صفحه نمایش متوقف میشود.
یک Process Grant تصمیمگیری را به زمان قبل منتقل میکند. با اجرای jit grant --process claude --profile jamf --for 8h کاربر میتواند به یک عامل خاص اجازه دهد تا از اسرار تعیینشده برای یک بازه زمانی محدود بدون نظارت استفاده کند. این اجازه به درخت ترمینال (Terminal Tree) گره خورده است. این اجازه نام ترمینال خاص (مثلاً iTerm2) و پردازش را ثبت میکند. برنامه دیگری که در جای دیگر ماشین خود را «claude» بنامد، چون از آن درخت منشأ نمیگیرد، هیچ دسترسیای به ارث نمیبرد.
این مجوزها میتوانند با رسیدن به ضربالاجل، با بستن ترمینال یا با تایپ jit grant revoke (که نیازی به اثر انگشت ندارد) پایان یابند. برای کسانی که به مجوز برای یک پردازش دقیق نیاز دارند که به محض خروج منقضی شود، میتوان از فلگ --pid استفاده کرد.
قابلیت حسابرسی و بازگشتپذیری
هر تلاش برای باز کردن قفل و هر دسترسی به اعتبارنامهها در یک لاگ بادوام ثبت میشود. کاربران میتوانند jit audit را اجرا کنند تا دقیقاً ببینند کدام ابزار در چه زمانی به کدام راز دسترسی داشته است. این لاگ از فرمت key=value استفاده میکند که بهراحتی قابل grepping است.
آرگومانهای دستورات ماسک شدهاند تا لاگ ثابت کند دستوری اجرا شده است بدون اینکه خودِ راز را ذخیره کند. برای مثال، ردپای حسابرسی میتواند نشان دهد که aws s3 ls توسط claude برای خواندن aws/default اجرا شده است، و همزمان یک ورودی level=warn را نشان دهد که در آن یک اسکریپت node postinstall.js تحت npm برای دسترسی به همان کلیدها رد شده است. لاگ همچنین برای پردازشهایی که کرنل شناسایی میکند متعلق به کاربر نیستند و سعی در بررسی agent دارند، kind=error ثبت میکند.
کاربران میتوانند لاگها را با فلگهایی مانند --kind ،--status ok|failed|denied ،--since/--until (مثلاً 2h یا 3d) و --parent فیلتر کنند. فلگ --follow (-f) امکان استریم زنده رویدادها را فراهم میکند و --format json خروجیهای قابل پردازش توسط ماشین میدهد. این لاگها به عنوان فایلهای بادوام در کنار خزانه ذخیره میشوند و اجازه میدهند کاربر رویدادهای هفته گذشته را به همان راحتی ساعت گذشته حسابرسی کند.
اگر یک مهاجرت باعث اختلال در ابزاری شود، فرآیند کاملاً بازگشتپذیر است. jitpass هرگز یک اعتبارنامه را تخریب نمیکند. پیش از تغییر هر فایل، یک نسخه پشتیبان رمزگذاریشده از آن در خزانه میگیرد. اجرای jit migrate undo ~/code/myapp تمام فایلهای تغییر یافته را بایتبهبایت به حالت اول برمیگرداند.
تحلیل: تغییر به سمت Dev-Ops بیومتریک
برای توسعهدهنده مدرن، این نشاندهنده تغییری از «امنیت محیطی» (اعتماد به ماشین) به «اجرای محلی با اعتماد صفر» (Zero-Trust Local Execution) است. با افزایش قدرت عاملهای هوش مصنوعی در IDEهای ما، ریسک دیگر فقط یک هکر راه دور نیست، بلکه ابزاری مورد اعتماد است که اقدامی غیرقابل اعتماد انجام میدهد.
با انتقال مرز مجوزدهی به سطح سختافزار (Touch ID)، jitpass تکیه انسان به این امید که وابستگیهایش (dependencies) امن هستند را از بین میبرد. این ابزار سنسور بیومتریک را به یک فایروال برای هویت توسعهدهنده تبدیل میکند. این موضوع بهویژه برای ابزارهایی مانند پیکربندیهای سرور MCP و kubeconfig حیاتی است، جایی که یک توکن لو رفته میتواند دسترسی گستردهای به زیرساختها بدهد.
برای شروع ایمنسازی محیط خود، میتوانید یک jit scan غیرتخریبی اجرا کنید تا ببینید دقیقاً چه تعداد راز در دایرکتوری Home شما لو رفته است و چه درصدی از آنها توسط jitpass قابل محافظت هستند.




گفتگو