Блог

Claude Code 2.1.268: deny ережелері мен MCP-де не түзетілді

Markdown

Claude Code 2.1.268–2.1.269 төрт рұқсат мәселесін және /mcp ішіндегі құпиясөздің жария болуын түзетті. Бұл кімге әсер етеді, қалай жаңарту керек және ережелерді қалай тексеруге болады.

Мақаланы толық оқу

Claude Code бағдарламасының 2.1.268 нұсқасы 2026 жылғы 10 қыркүйекте шықты, ал келесі күні 2.1.269 нұсқасы жарық көрді. Бірден жаңартуыңыз керек: екі жағдайда агенттің .env файлдары мен қызмет қалталарына кіруін бұғаттау үшін қолданған deny ережелері үнсіз жұмыс істемеді. Бұған қоса, /mcp пәрмені конфигурацияларыңыздағы құпияларды терминалда көрсете алатын.

Төмендегі ақпараттың бәрі Anthropic-тің 2026 жылғы 17 қыркүйектегі дереккөз материалының күніне сай ресми өзгерістер журналдары мен құжаттамасына негізделген. Сол күнгі ең соңғы нұсқа — 2.1.274. Қателердің қалай жұмыс істегенін журналдағы жазбаларға сүйеніп сипаттаймыз; осал нұсқада айналып өту жолдары қайта тексерілген жоқ.

Ailoot-пен жұмыс істеу жөніндегі қосымша нұсқауларды құжаттамадан қараңыз.

Claude Code 2.1.268 және 2.1.269 нұсқаларында не түзетілді?

Негізгі түйін

Төрт рұқсат мәселесі түзетілді. deny және ask ережелері символдық сілтемелер арқылы өтетін жолдарда жұмыс істемеді, ал Read немесе Edit үшін қойылған deny ережесі env -C не eval бар жолдарда істемей қалуы мүмкін еді. «!» таңбасы бар ереже өз баптаулар файлының шегінен тыс қолданылды. tee пәрмені Edit үшін қойылған deny ережесі оны бұғаттамай-ақ файл жазатын. Бұған қоса, /mcp және claude mcp list конфигурациялардағы құпияларды, ал плагин қателері Git URL мекенжайларындағы токендерді көрсетті.

Рұқсат ережелеріне қатысты төрт түзету бар:

  1. Символдық сілтемелер үшін тыйымдар жұмыс істемеді. Символдық сілтемелері бар каталогтарға (/etc, /tmp, macOS жүйесіндегі /var, Linux жүйесіндегі /bin) жазылған deny және ask ережелері жолдың нақты орналасуы көрсетілгенде іске қосылмады. Bash пәрмендері де символдық сілтеме арқылы көрсетілген жолға жазылған deny ережелерін елемеді.
  2. env -C немесе eval қатар кездескенде оқу мен өңдеуге қойылған тыйым істемей қалды. Пәрмен жолында рұқсат тексергіші талдай алмайтын құрылым болса, Read немесе Edit үшін қойылған deny ережесі іске қосылмай қалуы мүмкін еді.
  3. «!» таңбасы бар ереже ойдағыдан кеңірек қолданылды. ! таңбасынан басталған deny немесе ask ережесі өзі жазылған баптаулар файлының шегінен тыс қолданылды. Енді ол тек өз дереккөзінің шегінде қолданылады, ал жеке тұрған терістеу ! еленбейді.
  4. tee пәрмені тыйымдарды айналып өтіп файл жазды. Edit() үшін deny ережелері мен жазу жолын тексеру Bash-тың tee пәрмені жасаған файлға қолданылмады. Bash(tee:*) рұқсаты енді жұмыс каталогтарынан тыс жерге жазуға мүмкіндік бермейді.

Бұл нұсқалар құпия ақпараттың ашылып кетуіне қатысты тағы екі мәселені түзетті. WebFetch енді қосылымды ашық қалдыратын серверден жауапты шексіз күтпейді: сұрау 300 секундтан кейін сәтсіз аяқталады, ал күту уақытын CLAUDE_CODE_WEBFETCH_DEADLINE_MS айнымалысы арқылы баптауға болады. Сондай-ақ ұзақ уақыт белсенді емес сеанстардағы процессорды тұрақты түрде көп пайдаланатын мәселе жойылды.

Claude Code-та тыйымдар қалай жұмыс істейді?

Негізгі түйін

Ережелер settings.json файлының permissions блогында жазылады: deny тыйым салады, ask растауды сұрайды, ал allow әрекетке растаусыз рұқсат береді. Тексеру реті мынадай: алдымен deny, содан кейін ask, соңында allow. Ереже пішімі — Tool немесе Tool(detail), мысалы, Read(./.env).

Claude Code-та ережелердің үш тізімі бар: deny (әрдайым тыйым салынады), ask (әрекет орындалмас бұрын сұралады) және allow (растаусыз рұқсат етіледі). Агент бір әрекетті орындағалы жатқанда, ережелер дәл осы ретпен тексеріледі. Сәйкес келген deny ережесі сол әрекетке арналған кез келген allow ережесінің күшін жояды: рұқсат беретін ереже тыйымнан ерекшелік жасай алмайды.

Ережелер үш жерде сақталады: пайдаланушы ережелері — ~/.claude/settings.json ішінде, жоба ережелері — репозиторий ішіндегі .claude/settings.json ішінде, ал жергілікті ережелер — .claude/settings.local.json ішінде. Кілттері бар файлды оқуға тыйым салатын баптаулар мысалы:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)",
      "Bash(rm *)"
    ]
  }
}

Белсенді ережелердің барлығын және олардың әрқайсысы қай файлдан келгенін көру үшін сеанста /permissions пәрменін орындаңыз. Егер ереже оқуға тыйым салса, хабарламада сол ереженің атауы көрсетіледі; бұл төмендегі тексеруге көмектеседі.

Қандай қателер тыйымдарға және ережелер ауқымына әсер етті?

Қателер жолдар мен пәрмендерді тексеруге, сондай-ақ әртүрлі баптаулар файлдарынан келген ережелердің ауқымына әсер етті.

Бірінші жағдай: символдық сілтемелер. macOS жүйесінде /etc, /tmp және /var нақты қалталарға, яғни /private ішіндегі қалталарға апаратын символдық сілтемелер; Linux жүйесінде /bin де жиі осыған ұқсас символдық сілтеме болады. Жолдың бір жазылуына арналған deny ережесін орнатып, агент оған басқа жазылуын пайдаланып кірсе (мысалы, символдық сілтеменің орнына нақты орналасуын қолданса), ереже іске қосылмады. Bash пәрмендері де символдық сілтеме арқылы көрсетілген жолға арналған тыйымды елемеді. 2.1.268 нұсқасында екі жағдай да түзетілді: енді жолдың қай жазылуы қолданылса да ереже іске қосылады.

Екінші жағдай: бір жолдағы env -C және eval. Рұқсат тексергіші пәрменнің қай файлдарға кіретінін анықтау үшін оны талдайды. Ол env -C немесе eval сияқты құрылымдарды талдай алмайды. Қате мынада болды: жолда сондай құрылым кездескенде, Read немесе Edit үшін қойылған deny ережесі қолданылмай қалуы мүмкін еді. Соның салдарынан пәрмен қорғалған файлды оқу не өңдеуге қойылған тыйымды айналып өте алатын.

Үшінші жағдай: «!» таңбасы бар ереже өз шегінен тыс қолданылды. ! таңбасынан басталатын ереже тек өзі жазылған баптаулар файлының ішінде қолданылуы керек. 2.1.269 нұсқасына дейін ол басқа баптаулар көздеріне де қолданылды. Енді ереже тек өз файлының аясында қолданылады, ал жеке тұрған ! еленбейді.

Төртінші жағдай: tee арқылы жазу. Bash-тың tee пәрмені файлға жаза алады. Жазу жолын тексеру және Edit() үшін қойылған deny ережелері ол файлға қолданылмады. Сонымен қатар Bash(tee:*) рұқсаты жұмыс каталогтарынан тыс жерге жазуға мүмкіндік берді. 2.1.269 нұсқасында бұл тексерулер tee арқылы жазылған файлдарға да қолданыла бастады: файлға қойылған тыйым күшіне енеді, ал Bash(tee:*) тек жұмыс каталогтарындағы әрекеттерді қамтиды.

Егер белгілі бір нысандарға арналған тыйымдарды — .env файлын, бірнеше қызмет қалтасын немесе қауіпті пәрмендерді бұғаттау үшін — қолдансаңыз, оларды да тексеріңіз. Нұсқаулар төменде.

/mcp пәрмені кілттеріңізді қалай көрсетуі мүмкін еді?

Негізгі түйін

MCP конфигурацияларындағы кілттер көбіне ${VAR} айнымалылары арқылы беріледі. /mcp, /plugin, claude mcp list және claude mcp get пәрмендері, сондай-ақ MCP жүйесіне кіру қателері алмастырылған мәндерді, яғни кілттердің өзін көрсетті. 2.1.268 нұсқасында шығыс құпия деректерден тазартылған.

MCP серверлерінің конфигурацияларында кілттер әдетте орта айнымалыларында сақталып, ${VAR} арқылы көрсетіледі; осылайша файлдың өзін репозиторийде құпиялардың өздерінсіз сақтауға болады. Мәселе мәндері алдын ала алмастырылған конфигурацияны көрсететін пәрмендерде (/mcp, /plugin, claude mcp list, claude mcp get), сондай-ақ MCP жүйесіне кіру қате хабарларында болды. Экранда кілттің өзі көрінетін.

Тағы бір түзету плагиндер мен маркетплейс қателеріне қатысты: олар бастапқы Git URL мекенжайындағы токенді немесе құпиясөзді көрсете алатын.

Егер ескі нұсқадағы /mcp немесе claude mcp list шығысы ағынға, скриншотқа, әріптесіңізге жіберілген хабарға немесе құрылғыңыздан тыс кеткен журналға, соның ішінде автоматты түрде, жазылса, MCP конфигурацияларындағы кілттер ашылды деп есептеп, оларды ауыстырыңыз. Егер шығыс құрылғыңыздан ешқашан шықпаса, жаңарту жеткілікті. MCP серверлері мен дайын баптаулар туралы бөлек нұсқаулығымыз бар: Claude Code MCP серверлері.

Осы нұсқалардағы басқа өзгерістер

WebFetch және артефактілер. Бұрын deny немесе ask ішінде егжей-тегжейі көрсетілмеген WebFetch ережесі жарияланған артефактілерді оқуға және өзгертуге де қолданылатын. 2.1.268 нұсқасынан бастап ол артефактілерге қолданылмайды. Оларды бұғаттау үшін бөлек Artifact ережесі немесе доменге арналған, мысалы WebFetch(domain:claude.ai), ереже қажет. Егер артефактілерді оқудан қорғау үшін жалпы WebFetch тыйымына сүйенген болсаңыз, баптауларыңызды қайта тексеріңіз: бұрынғы ереже енді бұл әрекеттерді бұғаттамайды.

WebFetch енді уақыт шектеуімен жұмыс істейді. Қосылымды ашық қалдырып, жауабын аяқтамайтын серверге жіберілген сұрау енді 300 секундтан кейін сәтсіз аяқталады. Бұрын мұндай сұрау шексіз тұрып қалуы мүмкін еді. Бұл әрекетті CLAUDE_CODE_WEBFETCH_DEADLINE_MS айнымалысы арқылы баптауға болады; оны 0 мәніне орнату уақыт шектеуін өшіреді.

Белсенді емес сеанстарда процессорды тұрақты жоғары пайдалану жойылды. Claude Code-тағы белсенді емес цикл ұзақ уақытқа созылған белсенді емес сеанстарда процессорды тұрақты жоғары пайдалануға әкелуі мүмкін еді. Бұл қате 2.1.268 нұсқасында түзетілді. Ол сеанстарын күні бойы ашық ұстайтын адамдарға да әсер етуі мүмкін еді.

Ең соңғы нұсқаны орнатыңыз. 2.1.269 нұсқасында жаңа қате пайда болды: сеанс ұзақ уақыт жұмыс істегеннен кейін, деректерді тек оқитын Bash Git пәрмендері рұқсат сұрай бастады. Бұл қате 2.1.270 нұсқасында түзетілді. Сондықтан ең соңғы нұсқаға жаңартыңыз (2026 жылғы 17 қыркүйектегі ең соңғы нұсқа — 2.1.274); 2.1.268 немесе 2.1.269 нұсқаларында тоқтап қалмаңыз.

Қалай жаңартып, тыйымдардың жұмыс істейтінін тексеруге болады?

Негізгі түйін

Нұсқаны claude --version пәрменімен тексеріңіз, ең соңғы шығарылымға жаңартыңыз, содан кейін құпиялары жоқ қауіпсіз файлмен тексеріңіз: оған deny ережесін қосып, агенттен файлды оқуын сұраңыз және тыйым хабарламасында өз ережеңіз көрсетілгеніне көз жеткізіңіз.

  1. Қазіргі нұсқаңызды анықтаңыз. Терминалда claude --version пәрменін орындаңыз. Жоғарыда сипатталған мәселелерге арналған түзетулер 2.1.268 және 2.1.269 нұсқаларында шықты. Нұсқа нөмірі 2.1.268-ден төмен болса, нұсқаңызда бұл түзетулер әлі жоқ. Дегенмен әр мәселенің сізге қатысы бар-жоғы қолданатын жолдарға, пәрмендерге және ережелерге байланысты.
  2. Жаңартыңыз. Claude Code бағдарламасын ең соңғы нұсқаға қалай жаңарту керек нұсқаулығында қадамдық нұсқаулар мен ақауларды жою жолдары берілген. Ең соңғы нұсқаны таңдаңыз; 2.1.268 нұсқасында тоқтамаңыз.
  3. Тыйымды тексеріңіз. Ережені нақты .env файлында тексермеңіз: тыйым жұмыс істемесе, агент нақты кілттерді көреді. Кез келген мәтін, мысалы, “this is a test” деген мәтін жазылған secret-test.txt сынақ файлын жасаңыз; жобаның .claude/settings.json файлындағы deny тізіміне "Read(./secret-test.txt)" ережесін қосыңыз; сеансты қайта іске қосыңыз; содан кейін: «secret-test.txt файлын оқып, ішінде не бар екенін айт» деп сұраңыз. Күтілетін нәтиже — өз ережеңіздің атауы көрсетілген тыйым хабарламасы. Агент файлды оқыса, бұл сынақта тыйым жұмыс істемеді. Алдымен жоғарыдағы бөлімнен синтаксисті тексеріп, белсенді ережелер мен олардың қай файлдан жүктелгенін көру үшін /permissions пәрменін ашыңыз. Сынақ нәтижесінің өзі себебін анықтамайды. Бір тыйым осы файлға арналған ереженің жұмыс істейтінін көрсетеді; басқа ережелеріңіз туралы ештеңе айтпайды, сондықтан оларды да дәл осылай бір-бірден тексеріңіз.
  4. Осындай жолдарды қолдансаңыз, символдық сілтеме жағдайын тексеріңіз. macOS жүйесінде /tmp, /etc немесе /var жолдарына, не Linux жүйесінде /bin жолына қойылған тыйымдарыңыз болса, жаңартқаннан кейін осы жолдар үшін де сынақты қайталаңыз.
  5. «!» таңбасы бар ережелерді қарап шығыңыз. Ондай ережелерді қолданған болсаңыз, әрқайсысы қолданылуы тиіс файлда жазылғанын тексеріңіз.

Тыйым жұмыс істесе де, Claude Code қажетті файлдарды көре алмаса, мына бөлек түсіндірмені қараңыз: Claude Code жобаның файлдарын неге көре алмайды.

Дәл қазір жаңарта алмасаңыз

Кейде жаңартуды кейінге қалдыруға тура келеді: ортаны өзгерте алмайсыз, компьютер корпоративтік меншікте немесе ағымдағы тапсырманы аяқтауыңыз керек. Жаңартқанға дейін тәуекелді мына жолдармен азайтуға болады:

  • жолдың екі жазылуына да — символдық сілтемесіне де, нақты орналасуына да — deny ережелерін жазыңыз (macOS жүйесінде нақты жолдар /private ішінде болады);
  • бір жолда бірнеше пәрменді біріктірмеңіз, агенттен орындауды сұрайтын пәрмендерде env -C пен eval қолданбаңыз;
  • /mcp, /plugin, claude mcp list немесе claude mcp get шығысын ешкімге көрсетпеңіз және бөтен адамның қолына өтіп кетуі мүмкін MCP конфигурацияларындағы кілттерді ауыстырыңыз;
  • tee пәрмені Edit үшін қойылған deny ережесін айналып өтіп файл жазатынын есте сақтаңыз — Bash рұқсат етілген болса, файлдар қорғалған деп санамаңыз.

Бұл шаралар нақты айналып өту жолдарының ықтималдығын азайтады, бірақ түзетудің орнын баспайды. Мүмкіндік туған бойда жаңартып, алдыңғы бөлімдегі сынақты орындаңыз.

Қысқаша қорытынды

2.1.268 және 2.1.269 нұсқаларында Claude Code-тағы рұқсатқа қатысты төрт мәселе түзетілді: символдық сілтемелер, env -C және eval бар жолдар, өз файлынан тыс қолданылған «!» таңбасы бар ережелер және tee арқылы жазу. Бұған қоса, /mcp шығысында құпиялардың, ал плагин қателерінде токендердің ашылып кетуі түзетілді. Нұсқа нөмірін тексеріп, ең соңғы шығарылымға жаңартыңыз да, жоғарыдағы бөлімдегі сынақ файлын пайдаланып тексеріңіз. Өз ережеңіздің атауы көрсетілген тыйым хабарламасы осы сынақта тыйымның жұмыс істегенін білдіреді. Ереженің баптаулар файлында болуының өзі оның жұмыс істейтінін растауға жеткіліксіз.

Дереккөздер

Модельдермен жұмысты жалғастыру үшін Ailoot сайтына өтіңіз.

Толығырақ

Жиі қойылатын сұрақтар

Нақты құпияны ашпай deny ережесін қалай сынауға болады?

Зиянсыз мәтіні бар файл жасап, сол файлға Read арқылы қол жеткізуге тыйым салыңыз. Сеансты қайта бастап, агенттен оны оқуды сұраңыз. Жауапта сіздің ережеңізге байланысты бас тарту болуы керек. Сәтсіз өтуі мүмкін сынақта нақты .env файлын қолданбаңыз.

Бір рет оқуға тыйым салынуы барлық рұқсаттың қауіпсіздігін дәлелдей ме?

Жоқ. Ол тек сыналған файл мен оған қол жеткізу жолын тексереді. /permissions ішіндегі белсенді ережелерді қарап, сеніп отырған басқа жолдар мен жағдайларды, қажет болса символдық сілтемелер арқылы жазылған жолдарды да сынаңыз.

Барлық мақалалар