Claude Code 2.1.268: Τι διορθώθηκε στους κανόνες deny και στο MCP
MarkdownΤο Claude Code 2.1.268–2.1.269 διόρθωσε τέσσερα ζητήματα δικαιωμάτων και μια διαρροή μυστικών στο /mcp. Ποιοι επηρεάζονται, πώς να ενημερωθείτε και πώς να ελέγξετε τους κανόνες σας.
Διαβάστε ολόκληρο το άρθρο
Η έκδοση 2.1.268 του Claude Code κυκλοφόρησε στις 10 Σεπτεμβρίου 2026 και την επόμενη ημέρα ακολούθησε η 2.1.269. Θα πρέπει να ενημερωθείτε αμέσως: σε δύο περιπτώσεις, οι κανόνες deny που χρησιμοποιείτε για να αποκλείετε την πρόσβαση του agent στα .env και στους φακέλους υπηρεσιών δεν λειτουργούσαν, χωρίς να εμφανίζεται σχετική ειδοποίηση. Επιπλέον, η εντολή /mcp μπορούσε να εμφανίσει μυστικά από τις ρυθμίσεις σας στο τερματικό.
Όλα τα παρακάτω βασίζονται στο επίσημο αρχείο αλλαγών και την τεκμηρίωση της Anthropic, όπως ίσχυαν στις 17 Σεπτεμβρίου 2026, την ημερομηνία του αρχικού υλικού. Η πιο πρόσφατη έκδοση εκείνη την ημερομηνία ήταν η 2.1.274. Περιγράφουμε πώς λειτουργούσαν τα σφάλματα με βάση αυτές τις καταχωρίσεις· οι παρακάμψεις δεν αναπαράχθηκαν στην ευάλωτη έκδοση.
Για πρόσθετες οδηγίες σχετικά με τη χρήση του Ailoot, δείτε την τεκμηρίωση.
Τι διορθώθηκε στις εκδόσεις Claude Code 2.1.268 και 2.1.269;
Κύριο συμπέρασμα
Διορθώθηκαν τέσσερα ζητήματα δικαιωμάτων. Οι κανόνες deny και ask δεν λειτουργούσαν σε διαδρομές μέσω συμβολικών συνδέσμων, ενώ η άρνηση σε Read ή Edit μπορούσε να αποτύχει σε γραμμές που περιείχαν env -C ή eval. Ένας κανόνας με «!» εφαρμοζόταν πέρα από το αρχείο ρυθμίσεών του. Η εντολή tee δημιουργούσε αρχεία χωρίς να εμποδίζεται από την άρνηση στο Edit. Επιπλέον, οι εντολές /mcp και claude mcp list εμφάνιζαν μυστικά από αρχεία ρυθμίσεων, ενώ τα σφάλματα πρόσθετων εμφάνιζαν διακριτικά από διευθύνσεις URL Git.
Τέσσερις διορθώσεις αφορούν τους κανόνες δικαιωμάτων:
- Οι αρνήσεις σε συμβολικούς συνδέσμους δεν λειτουργούσαν. Οι κανόνες deny και ask που είχαν γραφτεί για καταλόγους με συμβολικούς συνδέσμους (
/etc,/tmp,/varστο macOS,/binστο Linux) δεν ενεργοποιούνταν όταν μια διαδρομή προσδιοριζόταν μέσω της πραγματικής της θέσης. Οι εντολές Bash επίσης αγνοούσαν κανόνες deny που είχαν γραφτεί για μια διαδρομή μέσω συμβολικού συνδέσμου. - Η άρνηση ανάγνωσης και επεξεργασίας αποτύγχανε μαζί με
env -Cήeval. Αν η ίδια γραμμή εντολής περιείχε μια κατασκευή που ο έλεγχος δικαιωμάτων δεν μπορούσε να αναλύσει, η άρνηση σε Read ή Edit μπορούσε να μην ενεργοποιηθεί. - Ένας κανόνας με «!» εφαρμοζόταν ευρύτερα από το προβλεπόμενο. Ένας κανόνας deny ή ask που ξεκινούσε με
!εφαρμοζόταν πέρα από το αρχείο ρυθμίσεων όπου είχε γραφτεί. Τώρα εφαρμόζεται μόνο μέσα στην πηγή του και ένα σκέτο σύμβολο άρνησης!αγνοείται. - Η εντολή
teeπαρέκαμπτε τις αρνήσεις κατά την εγγραφή. Οι κανόνες deny γιαEdit()και ο έλεγχος διαδρομής εγγραφής δεν εφαρμόζονταν σε αρχείο που δημιουργούσε η εντολή Bashtee. Η άδειαBash(tee:*)δεν καλύπτει πλέον εγγραφές έξω από τους καταλόγους εργασίας.
Οι εκδόσεις αυτές διόρθωσαν επίσης δύο ζητήματα που αφορούσαν την έκθεση μυστικών. Το WebFetch δεν περιμένει πλέον επ’ αόριστον απάντηση από διακομιστή που διατηρεί ανοιχτή τη σύνδεση: το αίτημα αποτυγχάνει μετά από 300 δευτερόλεπτα και η προθεσμία μπορεί να ρυθμιστεί με τη μεταβλητή CLAUDE_CODE_WEBFETCH_DEADLINE_MS. Επίσης, εξαλείφθηκε η παρατεταμένη υψηλή χρήση CPU σε μεγάλες περιόδους αδράνειας.
Πώς λειτουργούν οι αρνήσεις στο Claude Code;
Κύριο συμπέρασμα
Οι κανόνες γράφονται στο μπλοκ permissions του settings.json: το deny αποκλείει, το ask ζητά επιβεβαίωση και το allow επιτρέπει μια ενέργεια χωρίς επιβεβαίωση. Οι έλεγχοι εκτελούνται με αυτή τη σειρά: deny, έπειτα ask και μετά allow. Ένας κανόνας έχει τη μορφή Tool ή Tool(detail), για παράδειγμα Read(./.env).
Το Claude Code έχει τρεις λίστες κανόνων: deny (πάντα απαγορευμένο), ask (ζητά επιβεβαίωση πριν από την ενέργεια) και allow (επιτρέπεται χωρίς επιβεβαίωση). Όταν ο agent πρόκειται να κάνει κάτι, οι κανόνες ελέγχονται αυστηρά με αυτή τη σειρά. Ένα deny που αντιστοιχεί ακυρώνει οποιοδήποτε allow για την ίδια ενέργεια: ένας κανόνας 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 για μια γραφή μιας διαδρομής, αλλά ο agent αποκτούσε πρόσβαση μέσω άλλης (για παράδειγμα, μέσω της πραγματικής θέσης αντί του συμβολικού συνδέσμου), ο κανόνας δεν ενεργοποιούνταν. Οι εντολές Bash επίσης αγνοούσαν μια άρνηση που είχε γραφτεί για διαδρομή μέσω συμβολικού συνδέσμου. Στην έκδοση 2.1.268 διορθώθηκαν και οι δύο περιπτώσεις: ο κανόνας πλέον ισχύει ανεξάρτητα από τη γραφή της διαδρομής.
Δεύτερη περίπτωση: env -C και eval στην ίδια γραμμή. Ο έλεγχος δικαιωμάτων αναλύει μια εντολή για να προσδιορίσει ποια αρχεία θα προσπελάσει. Δεν μπορεί να αναλύσει κατασκευές όπως οι env -C ή eval. Το σφάλμα ήταν ότι όταν εμφανιζόταν μια τέτοια κατασκευή στη γραμμή, η άρνηση σε Read ή Edit ενδέχεται να μην εφαρμοζόταν. Ως αποτέλεσμα, η εντολή μπορούσε να παρακάμψει την άρνηση κατά την ανάγνωση ή επεξεργασία προστατευμένου αρχείου.
Τρίτη περίπτωση: ένας κανόνας με «!» εφαρμοζόταν πέρα από τα όριά του. Ένας κανόνας που αρχίζει με ! πρέπει να εφαρμόζεται μόνο μέσα στο αρχείο ρυθμίσεων όπου είναι γραμμένος. Πριν από την έκδοση 2.1.269, εφαρμοζόταν και σε άλλες πηγές ρυθμίσεων. Τώρα το εύρος του περιορίζεται στο δικό του αρχείο και ένας κανόνας που αποτελείται μόνο από ! αγνοείται.
Τέταρτη περίπτωση: εγγραφή μέσω tee. Η εντολή Bash tee μπορεί να γράψει σε αρχείο. Ο έλεγχος διαδρομής εγγραφής και οι κανόνες deny του Edit() δεν εφαρμόζονταν σε αυτό το αρχείο. Ταυτόχρονα, η άδεια 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 εμφάνιζαν τις ρυθμίσεις με τις τιμές ήδη αντικατεστημένες. Το ίδιο το κλειδί εμφανιζόταν στην οθόνη.
Μια άλλη διόρθωση αφορά σφάλματα πρόσθετων και αγορών πρόσθετων: μπορούσαν να εμφανίσουν διακριτικό ή κωδικό πρόσβασης από την αρχική διεύθυνση URL Git.
Αν η έξοδος των /mcp ή claude mcp list σε παλαιότερη έκδοση εμφανίστηκε σε ροή, σε στιγμιότυπο οθόνης, σε μήνυμα προς συνάδελφο ή σε αρχείο καταγραφής που έφυγε από τον υπολογιστή σας, ακόμη και αυτόματα, θεωρήστε ότι εκτέθηκαν τα κλειδιά από τις ρυθμίσεις MCP και αλλάξτε τα. Αν η έξοδος δεν έφυγε ποτέ από τον υπολογιστή σας, αρκεί η ενημέρωση. Έχουμε ξεχωριστό οδηγό για διακομιστές MCP και έτοιμες ρυθμίσεις: Διακομιστές MCP του Claude Code.
Άλλες αλλαγές σε αυτές τις εκδόσεις
WebFetch και τεχνουργήματα. Προηγουμένως, ένας κανόνας WebFetch χωρίς λεπτομέρειες στις λίστες deny ή ask εφαρμοζόταν επίσης στην ανάγνωση και τροποποίηση δημοσιευμένων τεχνουργημάτων. Από την έκδοση 2.1.268 και μετά, δεν ισχύει πλέον για αυτά. Για να αποκλείσετε τεχνουργήματα, χρειάζεστε ξεχωριστό κανόνα Artifact ή έναν κανόνα για τον τομέα, όπως WebFetch(domain:claude.ai). Αν βασιζόσασταν σε μια γενική άρνηση WebFetch για προστασία από την ανάγνωση τεχνουργημάτων, ελέγξτε ξανά τις ρυθμίσεις σας: ο προηγούμενος κανόνας δεν αποκλείει πλέον αυτές τις ενέργειες.
Το WebFetch έχει πλέον χρονικό όριο. Ένα αίτημα προς διακομιστή που διατηρεί ανοιχτή τη σύνδεση και δεν ολοκληρώνει την απάντησή του αποτυγχάνει πλέον μετά από 300 δευτερόλεπτα. Προηγουμένως, ένα τέτοιο αίτημα μπορούσε να κρεμαστεί επ’ αόριστον. Η συμπεριφορά μπορεί να ρυθμιστεί με τη μεταβλητή CLAUDE_CODE_WEBFETCH_DEADLINE_MS· η τιμή 0 απενεργοποιεί το χρονικό όριο.
Εξαλείφθηκε η παρατεταμένη υψηλή χρήση CPU σε ανενεργές συνεδρίες. Σε μεγάλες περιόδους αδράνειας, ένας βρόχος αδράνειας στο Claude Code μπορούσε να προκαλέσει παρατεταμένη υψηλή χρήση CPU. Αυτό το σφάλμα διορθώθηκε στην έκδοση 2.1.268. Θα μπορούσε επίσης να επηρεάσει όσους διατηρούν τις συνεδρίες ανοιχτές όλη μέρα.
Εγκαταστήστε την πιο πρόσφατη έκδοση. Στην έκδοση 2.1.269 εμφανίστηκε ένα νέο σφάλμα: αφού μια συνεδρία λειτουργούσε για μεγάλο χρονικό διάστημα, οι εντολές Bash Git που απλώς διάβαζαν δεδομένα άρχισαν να ζητούν άδεια. Διορθώθηκε στην έκδοση 2.1.270. Επομένως, ενημερωθείτε στην πιο πρόσφατη έκδοση (στις 17 Σεπτεμβρίου 2026, αυτή ήταν η 2.1.274)· μην σταματήσετε στην 2.1.268 ή στην 2.1.269.
Πώς ενημερώνεστε και ελέγχετε ότι λειτουργούν οι αρνήσεις;
Κύριο συμπέρασμα
Ελέγξτε την έκδοση με claude --version, ενημερωθείτε στην πιο πρόσφατη έκδοση και έπειτα δοκιμάστε με ένα ασφαλές αρχείο χωρίς μυστικά: προσθέστε έναν κανόνα deny για αυτό, ζητήστε από τον agent να διαβάσει το αρχείο και βεβαιωθείτε ότι η άρνηση αναφέρεται στον κανόνα σας.
- Μάθετε την τρέχουσα έκδοσή σας. Εκτελέστε
claude --versionστο τερματικό. Οι διορθώσεις για τα ζητήματα που περιγράφονται παραπάνω κυκλοφόρησαν στις εκδόσεις 2.1.268 και 2.1.269. Αν ο αριθμός έκδοσης είναι μικρότερος από 2.1.268, η έκδοσή σας δεν περιλαμβάνει ακόμη αυτές τις διορθώσεις, αν και το αν σας αφορά κάθε ζήτημα εξαρτάται από τις διαδρομές, τις εντολές και τους κανόνες που χρησιμοποιείτε. - Ενημερώστε. Ο οδηγός πώς να ενημερώσετε το Claude Code στην πιο πρόσφατη έκδοση περιέχει οδηγίες βήμα προς βήμα και αντιμετώπιση προβλημάτων. Επιλέξτε την πιο πρόσφατη έκδοση· μην σταματήσετε στην 2.1.268.
- Δοκιμάστε την άρνηση. Μην δοκιμάσετε έναν κανόνα σε πραγματικό
.env: αν αποτύχει η άρνηση, ο agent θα δει πραγματικά κλειδιά. Δημιουργήστε ένα δοκιμαστικό αρχείο, για παράδειγμαsecret-test.txt, που να περιέχει οποιοδήποτε κείμενο, όπως «αυτό είναι μια δοκιμή»· προσθέστε τον κανόνα"Read(./secret-test.txt)"στη λίστα deny του.claude/settings.jsonτου έργου· επανεκκινήστε τη συνεδρία· και ζητήστε: «διάβασε το αρχείο secret-test.txt και πες μου τι περιέχει». Η αναμενόμενη συμπεριφορά είναι μια άρνηση που κατονομάζει τον κανόνα σας. Αν ο agent διαβάσει το αρχείο, η άρνηση δεν λειτούργησε σε αυτήν τη δοκιμή. Ξεκινήστε ελέγχοντας τη σύνταξη στην παραπάνω ενότητα και ανοίξτε το/permissionsγια να δείτε τους ενεργούς κανόνες και τα αρχεία από τα οποία φορτώθηκαν. Το αποτέλεσμα της δοκιμής από μόνο του δεν προσδιορίζει την αιτία. Μία άρνηση δείχνει ότι λειτουργεί ο κανόνας για αυτό το αρχείο· δεν λέει τίποτα για τους υπόλοιπους κανόνες σας, οπότε ελέγξτε τους έναν κάθε φορά με τον ίδιο τρόπο. - Ελέγξτε την περίπτωση του συμβολικού συνδέσμου αν χρησιμοποιείτε τέτοιες διαδρομές. Αν έχετε αρνήσεις για τα
/tmp,/etcή/varστο macOS, ή για το/binστο Linux, επαναλάβετε τη δοκιμή για αυτές τις διαδρομές μετά την ενημέρωση. - Ελέγξτε τους κανόνες με «!». Αν χρησιμοποιήσατε τέτοιους κανόνες, ελέγξτε ότι ο καθένας είναι γραμμένος στο αρχείο όπου προορίζεται να ισχύει.
Αν η άρνηση λειτουργεί αλλά το Claude Code εξακολουθεί να μην μπορεί να δει τα αρχεία που χρειάζεστε, δείτε την ξεχωριστή εξήγηση: γιατί το Claude Code δεν μπορεί να δει αρχεία έργου.
Αν δεν μπορείτε να ενημερωθείτε αυτήν τη στιγμή
Μερικές φορές χρειάζεται να αναβάλετε μια ενημέρωση: δεν μπορείτε να αλλάξετε το περιβάλλον, ο υπολογιστής ανήκει στην εταιρεία σας ή χρειάζεται να ολοκληρώσετε την τρέχουσα εργασία. Μέχρι να ενημερωθείτε, μπορείτε να μειώσετε τον κίνδυνο ως εξής:
- γράψτε κανόνες deny και για τις δύο γραφές της διαδρομής—τον συμβολικό σύνδεσμο και την πραγματική θέση (στο macOS, οι πραγματικές διαδρομές βρίσκονται κάτω από το
/private)· - μην συνδυάζετε πολλές εντολές σε μία γραμμή και αποφύγετε τα
env -Cκαιevalστις εντολές που ζητάτε από τον agent να εκτελέσει· - μην εμφανίζετε σε κανέναν την έξοδο των
/mcp,/plugin,claude mcp listήclaude mcp getκαι αλλάξτε τα κλειδιά από ρυθμίσεις MCP που ενδέχεται να έχουν πέσει σε χέρια άλλων· - θυμηθείτε ότι η
teeπαρακάμπτει την άρνηση στο Edit—μη θεωρείτε τα αρχεία προστατευμένα αν επιτρέπεται το Bash.
Αυτά τα μέτρα μειώνουν την πιθανότητα συγκεκριμένων παρακάμψεων, αλλά δεν αντικαθιστούν τη διόρθωση. Ενημερωθείτε και εκτελέστε τη δοκιμή από την προηγούμενη ενότητα μόλις μπορέσετε.
Σύντομη σύνοψη
Οι εκδόσεις 2.1.268 και 2.1.269 διόρθωσαν τέσσερα ζητήματα δικαιωμάτων του Claude Code: συμβολικούς συνδέσμους, γραμμές με env -C και eval, κανόνες με «!» που εφαρμόζονταν πέρα από το δικό τους αρχείο και εγγραφές μέσω tee. Ξεχωριστά, διόρθωσαν την έκθεση μυστικών στην έξοδο του /mcp και διακριτικών στα σφάλματα πρόσθετων. Ελέγξτε τον αριθμό έκδοσής σας, ενημερωθείτε στην πιο πρόσφατη έκδοση και εκτελέστε τη δοκιμή με ένα δοκιμαστικό αρχείο από την παραπάνω ενότητα. Μια άρνηση που κατονομάζει τον κανόνα σας δείχνει ότι η άρνηση λειτούργησε σε αυτήν τη δοκιμή. Η παρουσία του κανόνα στις ρυθμίσεις από μόνη της δεν αρκεί για να επιβεβαιώσει ότι λειτουργεί.
Πηγές
- Claude Code, επίσημο αρχείο αλλαγών (καταχωρίσεις για τις εκδόσεις 2.1.268, 2.1.269, 2.1.270): https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
- Claude Code, ημερομηνίες κυκλοφορίας εκδόσεων στο npm: https://www.npmjs.com/package/@anthropic-ai/claude-code
- Claude Code, τεκμηρίωση δικαιωμάτων (σύνταξη deny/ask/allow): https://code.claude.com/docs/en/permissions
- Claude Code, εκδόσεις στο GitHub: https://github.com/anthropics/claude-code/releases
Για να συνεχίσετε να εργάζεστε με μοντέλα, μπορείτε να μεταβείτε στο Ailoot.
Περισσότερες λεπτομέρειες
Ερωτήσεις και απαντήσεις: Claude Code 2.1.268: Τι διορθώθηκε στους κανόνες deny και στο MCP
Πώς δοκιμάζω έναν κανόνα deny χωρίς να εκθέσω πραγματικό μυστικό;
Δημιουργήστε αρχείο με αβλαβές κείμενο, απαγορεύστε την πρόσβαση Read σε αυτό, επανεκκινήστε τη συνεδρία και ζητήστε από τον agent να το διαβάσει. Αναμένετε άρνηση που κατονομάζει τον κανόνα σας. Μη χρησιμοποιείτε πραγματικό .env σε δοκιμή που μπορεί να αποτύχει.
Μία επιτυχής άρνηση αποδεικνύει ότι όλα τα δικαιώματά μου είναι ασφαλή;
Όχι. Επαληθεύει μόνο το δοκιμασμένο αρχείο και τη συγκεκριμένη διαδρομή πρόσβασης. Εξετάστε τους ενεργούς κανόνες στο /permissions και δοκιμάστε τις άλλες διαδρομές και περιπτώσεις στις οποίες βασίζεστε, μαζί με διαφορετικές διατυπώσεις διαδρομών μέσω symlink όπου ισχύει.