اجازه گرفتن
عاملی که میتواند نام ۳۰۰ عکس را عوض کند، میتواند ۳۰۰ عکس را پاک هم بکند. میتواند هر فرمانی را که رایانهی شما میفهمد اجرا کند، هر فایلی را که به آن دسترسی دارد تغییر دهد و چیزهایی را از راه اینترنت بفرستد. بیشترِ وقتها دقیقاً همان کاری را میکند که خواستهاید. ولی «بیشترِ وقتها» برای پاک کردن کافی نیست.
پس چه کسی تصمیم میگیرد عامل اجازهی چه کاری را دارد؟
لیلا عاملم مدام میایستد و میپرسد «این فرمان اجرا شود؟». روزی چهل بار. دیگر بیآنکه بخوانم «بله» میزنم.
امید به نظرت چه کسی از تو میپرسد: مدل یا برنامهی دورِ مدل؟
لیلا فرمان را مدل نوشته. ولی مدل نمیتواند چیزی را اجرا کند... پس باید برنامه باشد که پیش از اجرا جلویش را میگیرد.
امید درست است. هر درخواستِ ابزار در راهِ رسیدن به رایانهات از برنامهی دورِ مدل میگذرد. این تنها جایی است که میشود بررسیاش کرد، مدل هر چه در سر داشته باشد.
لیلا پس چرا دربارهی چیزهای بیخطر، مثل نشان دادنِ فهرستِ یک پوشه، هم میپرسد؟
امید نمیداند کدام کار برای تو بیخطر است، مگر اینکه به او بگویی. حالا آن چهل «بله» چه میشوند؟
لیلا دیگر معنایی ندارند. اگر بپرسد بایگانی را پاک کند، احتمالاً به آن هم «بله» میزنم.
امید خطرِ واقعی همین است: نه خودِ پرسیدن، بلکه پرسیدن آنقدر زیاد که دیگر نخوانی. پس راهش این است که کارهای روزمره بیپرسش انجام شوند، تا پرسشهایی که میماند کم باشند و ارزش خواندن داشته باشند.
یک ایستِ بازرسی سرِ راهِ هر کار
اجازه (permission) تصمیمی است که برنامهی دورِ مدل پیش از اجرای یک درخواستِ ابزار میگیرد: اجازه دادن، اول از شما پرسیدن، یا رد کردن. مدل میتواند هر چیزی را درخواست کند؛ فقط آنچه مجاز است رخ میدهد.
وقتی کاری رد میشود، این را به شکلِ نتیجهی ابزار به مدل میگویند. مدل معمولاً راه دیگری را امتحان میکند یا از شما میپرسد چه کند. هیچ چیزی به رایانهی شما دست نزده است.
حالتهای اجازه
حالتِ اجازه (permission mode) تعیین میکند عامل روی هم رفته چقدر محتاط باشد. در Claude Code (در سال ۲۰۲۶) با Shift+Tab میانِ آنها جابهجا میشوید:
- پیشفرض (default): خواندن آزاد است؛ عامل پیش از ویرایشِ فایلها، اجرای فرمانها یا استفاده از شبکه میپرسد.
- پذیرفتنِ ویرایشها (accept edits): ویرایشِ فایلهای پروژه بیپرسش انجام میشود؛ فرمانها هنوز میپرسند.
- برنامهریزی (plan): عامل میتواند نگاه کند ولی چیزی را تغییر ندهد. (درسی جلوتر دربارهی همین است.)
- خودکار (auto): یک بررسیکنندهی جداگانه هر کار را بازبینی میکند و میگذارد کارهای امن انجام شوند.
- کنار گذاشتنِ اجازهها (bypass permissions): همه چیز مجاز است و هیچ پرسشی نیست. فقط برای یک سندباکسِ دورریختنی (پایینتر را ببینید)، هرگز روی رایانهی خودتان با فایلهای خودتان.
قاعدهها: اجازه، پرسش، رد
حالتها کلیاند. قاعدهها دقیقاند: فهرستی از کارهایی که همیشه مجازند، همیشه دربارهشان پرسیده میشود، یا همیشه رد میشوند. در Claude Code قاعدهها در یک فایلِ تنظیمات قرار دارند. این بخشی از فایلِ .claude/settings.json پروژهی لیلاست:
{
"permissions": {
"allow": ["Bash(npm run test *)", "Bash(git status)"],
"deny": ["Read(./.env)", "Bash(git push *)"]
}
}خط به خط:
"allow"همان فهرستِ اجازه (allow list) است: کارهایی که بیپرسش انجام میشوند.Bash(...)یعنی یک فرمانِ پوسته، و*یعنی «هر چیزی اینجا»، پسnpm run test *همهی شکلهای اجرای آزمونها را دربر میگیرد."deny"کارهایی را فهرست میکند که همیشه رد میشوند.Read(./.env)نمیگذارد عامل فایلی را بخواند که رمزها و کلیدها معمولاً در آن نگه داشته میشوند.git push *نمیگذارد کد را به نسخهی مشترکِ پروژه بفرستد؛ لیلا میخواهد این کار را خودش انجام دهد.- هر چیزی که در هیچکدام از دو فهرست نباشد، به رفتارِ حالتِ اجازه برمیگردد: معمولاً پرسیدن.
ترتیب مهم است: اول قاعدههای رد بررسی میشوند، بعد پرسش، بعد اجازه. پس اگر قاعدهای git * را مجاز کند و قاعدهی دیگری git push * را رد کند، فرستادن رد میشود. نمیشود چیزی را که میخواستید ممنوع کنید ناخواسته مجاز کنید.
سندباکسها
قاعدهها تعیین میکنند کدام کارها اجرا شوند. سندباکس (sandbox) محدود میکند که یک کار، وقتی اجرا شد، به چه چیزهایی دسترسی داشته باشد: یک فرمان کدام پوشهها را ببیند یا تغییر دهد، و اصلاً بتواند از شبکه استفاده کند یا نه. حتی اگر فرمانی از دستِ قاعدهها در برود، فقط به چیزهای درونِ سندباکس دسترسی دارد. Claude Code میتواند فرمانهایش را در یک سندباکس روی رایانهی خودتان اجرا کند، و بسیاری از عاملها کلاً درون یک کانتینر در فضای ابری کار میکنند: رایانهای تازه و خالی که بعد از کار دور انداخته میشود. «کنار گذاشتنِ اجازهها» فقط آنجا معقول است: چیزی از شما آنجا نیست که از دست برود.
امتحان کنید
اگر از Claude Code استفاده میکنید،
/permissionsرا بنویسید تا قاعدههایی را که از قبل دارید ببینید، و چند بار Shift+Tab را بزنید تا تغییرِ حالت را پایینِ صفحه ببینید. در هر عاملی، جایی را پیدا کنید که پیش از اجرای یک فرمان میپرسد، و دقت کنید دربارهی چه نوع کارهایی میپرسد. به کدامها همیشه «بله» میگویید؟
درست به کار بردن
- کارهای روزمره و امن را مجاز کنید. فرمانهایی که هر روز بیفکر تأییدشان میکنید (اجرای آزمونها، فهرستِ فایلها، دیدنِ وضعیت) جایشان در فهرستِ اجازه است، تا توجهتان برای بقیه بماند.
- آنچه هرگز نباید رخ دهد را رد کنید. فایلهای محرمانه، فرستادنِ کد به بیرون، پاک کردن بیرون از پروژه: یک بار قاعدهی رد بنویسید، به جای اینکه هر بار به «نه» زدنِ خودتان اعتماد کنید.
- هر پرسشی را که میگیرید بخوانید. وقتی کارهای روزمره مجاز شدند، هر پرسش یعنی چیزی غیرعادی. پیش از پاسخ، فرمان را بخوانید.
- دستِ باز را فقط درون سندباکس بدهید. اگر میخواهید عامل بیپرسش کار کند، آن را جایی بگذارید که به هیچ چیزِ مهمی برای شما دسترسی نداشته باشد.
واژههای این درس
- اجازه (permission) - تصمیمِ برنامهی دورِ مدل، پیش از اجرای یک درخواستِ ابزار، برای اجازه دادن، پرسیدن از شما یا رد کردن
- حالتِ اجازه (permission mode) - تنظیمی کلی برای اینکه عامل چقدر محتاط باشد، از پرسیدن دربارهی هر تغییر تا مجاز کردنِ همه چیز
- فهرستِ اجازه (allow list) - فهرستی از کارهایی که بیپرسش انجام میشوند؛ فهرستهای رد و پرسش هم به همین شکل برای رد کردن و پرسیدن کار میکنند
- سندباکس (sandbox) - فضایی بسته که محدود میکند کارهای عامل به کدام فایلها و به چه شبکهای دسترسی داشته باشند
ایدهی اصلی
مدل میتواند هر کاری را درخواست کند، ولی برنامهی دورِ مدل تصمیم میگیرد واقعاً چه رخ دهد. قاعدههای اجازه به شما امکان میدهند کارهای روزمره را آزاد بگذارید، کارهای خطرناک را ممنوع کنید و توجهتان را برای پرسشهایی نگه دارید که مهماند.