Μετάβαση στο περιεχόμενο

Ρύθμιση πολιτικών sandbox

Το αν μια εκτέλεση πράκτορα είναι μέσα σε sandbox αποφασίζεται στον διακομιστή, κατά την εκκίνηση (--sandbox). Ο διακόπτης Ενεργοποίηση sandbox και ο επιλογέας Backend στις Ρυθμίσεις → Διακομιστής → Διαγνωστικά και απόρρητο είναι προτιμήσεις που αποθηκεύονται στη συσκευή σας. Η ανίχνευση κεντρικού υπολογιστή της κάρτας Sandboxing αναφέρει τι μπορεί να περιτυλίξει ο κεντρικός υπολογιστής του διακομιστή.

Δύο στοιχεία ελέγχου φτάνουν σε μια εκτέλεση και αυτός ο οδηγός καλύπτει και τα δύο: τους κανόνες ενεργειών στις Ρυθμίσεις → Χώρος εργασίας → Δικαιώματα πρακτόρων, που αποφασίζουν τι μπορεί να κάνει push, να ανοίξει ή να φτάσει ένας πράκτορας, και τη δική του σημαία --sandbox του διακομιστή.

Έναν πράκτορα τον συγκρατούν έξι πράγματα. Το πρώτο είναι το sandbox του λειτουργικού συστήματος και είναι το μόνο υπό αίρεση — τα άλλα πέντε ισχύουν σε κάθε κεντρικό υπολογιστή.

Όριο Τι κάνει
Το sandbox του λειτουργικού συστήματος Seatbelt στο macOS, bubblewrap στο Linux και στο WSL2. Περιτυλίγει το CLI του Claude Code, τους προσαρμογείς ACP και το εργαλείο bash του harness. Απουσιάζει στα Windows και σε Linux χωρίς bwrap και socat
Το δικό του worktree Κάθε συνομιλία παίρνει το δικό της checkout copy-on-write. Το αρχικό checkout εντάσσεται στην εκτέλεση ως διαδρομή απαγόρευσης εγγραφής και το sandbox είναι αυτό που το επιβάλλει
Διαπιστευτήρια μέσω μεσίτη Ο μεσίτης διαπιστευτηρίων εκδίδει ένα περιβάλλον ανά εκτέλεση και το ανακαλεί κατά τον τερματισμό. Το token του GitHub σε αυτό μπορεί να διαβάζει αλλά όχι να κάνει push: ένα push περνά από το Control Center, που ρωτά πρώτα τον κανόνα push
Περιορισμοί ενεργειών Κάθε εργαλείο που τροποποιεί δεδομένα δηλώνει τις κατηγορίες επιδράσεών του και ο φρουρός τις επιλύει πριν εκτελεστεί η κλήση. Μια τιμή prompt χωρίς συνδεδεμένο εγκριτή απορρίπτεται
Καθαρισμός περιβάλλοντος Το ACP και το εργαλείο bash του harness παίρνουν ένα φιλτραρισμένο περιβάλλον. Το Claude Code μέσω NoSandboxAdapter κληρονομεί το περιβάλλον του κεντρικού υπολογιστή
Η επιφάνεια εργαλείων της λειτουργίας Μια λειτουργία μόνο για ανάγνωση αφαιρεί εντελώς τα εργαλεία που τροποποιούν το worktree και καρφιτσώνει το δικό της ρήμα εξόδου, ώστε να μπορεί ακόμη να παραδώσει

Τρία πράγματα παραμένουν πιο αδύναμα απ’ ό,τι φαίνονται:

  • Μόνο το ενσωματωμένο harness επιβάλλει την πύλη εργαλείων, τα συμβόλαια ολοκλήρωσης και τους δομικούς κανόνες λειτουργίας. Ο προσαρμογέας Claude Code δεν τα επιβάλλει. Ειδικά το Claude Code εκκινείται με --dangerously-skip-permissions, επειδή ένα μη διαδραστικό claude -p θα κολλούσε για πάντα στη δική του προτροπή — έτσι, οι δικές του κλήσεις ανάγνωσης, εγγραφής και επεξεργασίας ούτε φαίνονται ούτε περνούν από πύλη του Control Center, και τις εντολές bash του τις ελέγχει μόνο ένα hook που διαβάζει τη γραμμή εντολών. Όπου το sandbox είναι ενεργό, αυτό είναι το όριο γύρω τους.
  • Τα εργαλεία αρχείων εντός διεργασίας του harness (read, write, edit, apply patch, search, find, search_files) εκτελούνται μέσα στη διεργασία του διακομιστή, οπότε κανένα προφίλ sandbox δεν τα περιορίζει. Μόνο το εργαλείο bash περνά από τον εκτελεστή εντολών εντός sandbox. Αυτά τα εργαλεία περιορίζονται από τον δικό τους περιορισμό διαδρομών συν τους περιορισμούς ενεργειών.
  • Σε έναν κεντρικό υπολογιστή χωρίς backend, η πρώτη γραμμή δεν ισχύει καθόλου. Το ACP και το εργαλείο bash του harness καταφεύγουν στον καθαρισμό περιβάλλοντος συν την πολιτική εντολών· το Claude Code κληρονομεί το περιβάλλον του κεντρικού υπολογιστή μέσω NoSandboxAdapter. Ο διακομιστής το αναφέρει στο αρχείο καταγραφής εκκίνησής του. Ελέγξτε το δικό σας παρακάτω.

Αποφασίστε τι μπορεί να κάνει push ένας πράκτορας

Ενότητα με τίτλο «Αποφασίστε τι μπορεί να κάνει push ένας πράκτορας»

Δεν υπάρχει διακόπτης ανά πράκτορα για git push, GitHub, εισιτήρια ή δίκτυο. Καθένα είναι ένας κανόνας ενέργειας:

Κανόνας Ενσωματωμένη προεπιλογή Τι καλύπτει
Push σε απομακρυσμένο Ερώτηση πρώτα Κάθε git push προς το GitHub, όποιος κι αν είναι ο προσαρμογέας
Άνοιγμα pull request Ερώτηση πρώτα gh pr create και τα εργαλεία pull request
Δημοσίευση ανασκόπησης ή συγχώνευση Ερώτηση πρώτα gh pr merge, gh pr review, gh pr comment, gh pr close
Εγγραφή σε εξωτερικό tracker Ερώτηση πρώτα Εγγραφές εισιτηρίων μέσω των εργαλείων του Control Center και gh issue
Πρόσβαση στο δίκτυο Αποδοχή Αν το sandbox έχει καθόλου δίκτυο, και τα εργαλεία ιστού του harness
  1. Μεταβείτε στις Ρυθμίσεις → Χώρος εργασίας → Δικαιώματα πρακτόρων
  2. Επιλέξτε πεδίο εφαρμογής — Χώρος εργασίας, Πράκτορας ή Χώρος — και, στη γραμμή του κανόνα, επιλέξτε Αποδοχή, Ερώτηση πρώτα ή Απόρριψη

Ισχύουν επίσης κανόνες push περιορισμένοι σε κλάδους, όπως ένας που απορρίπτει το push στο main: δείτε το Περιορισμοί.

Σημείο ελέγχου: ζητήστε από τον πράκτορα να κάνει push ενός κλάδου. Με Ερώτηση πρώτα λαμβάνετε ένα αίτημα έγκρισης με το αποθετήριο και τα refs· με Απόρριψη, το git εμφανίζει ! [remote rejected] <ref> (Control Center policy: …).

Πώς κάθε κανόνας φτάνει στην εκτέλεση:

  • Το push επιβάλλεται μέσω αυτού που έχει η εκτέλεση. Το token του GitHub της είναι ένα token εγκατάστασης GitHub App μόνο για ανάγνωση, που μπορεί να διαβάζει περιεχόμενο και να δουλεύει με pull requests. Η διαμόρφωση git της στέλνει κάθε push προς το GitHub σε μια πύλη loopback στο cc_server, η οποία ρωτά τον κανόνα και μόνο τότε προωθεί το push με ένα token εγγραφής που ο πράκτορας δεν βλέπει ποτέ. Η πύλη προωθεί μόνο στο ίδιο το αποθετήριο του worktree ή σε αποθετήριο GitHub συνδεδεμένο με τον χώρο εργασίας. Αυτό ισχύει για κάθε προσαρμογέα.
  • Τα pull requests και τα issues από κέλυφος αναγνωρίζονται από τη γραμμή εντολών, στο εργαλείο bash του harness και, μέσω ενός hook, στο εργαλείο Bash του Claude Code. Ένας πράκτορας που κρύβει την εντολή (ένα script, eval, μια απευθείας κλήση API) περνά αυτόν τον έλεγχο, αλλά όχι την πύλη push.
  • Τα κλειδιά εισιτηρίων δεν τοποθετούνται ποτέ στο sandbox. Οι πράκτορες γράφουν εισιτήρια μέσω των εργαλείων MCP του Control Center, που ρωτούν τον κανόνα.
  • Το δίκτυο επιλύεται μία φορά, όταν ξεκινά η εκτέλεση. Η Απόρριψη κλείνει το δίκτυο του sandbox· η Αποδοχή και η Ερώτηση πρώτα το αφήνουν ανοιχτό, και με Ερώτηση πρώτα τα εργαλεία web_fetch και web_search του harness εξακολουθούν να ρωτούν σε κάθε κλήση. Όσο το δίκτυο είναι ανοιχτό, το GitHub βρίσκεται πάντα στη λίστα επιτρεπόμενων εξόδου.

Ελέγξτε αν οι εκτελέσεις πράκτορα είναι μέσα σε sandbox

Ενότητα με τίτλο «Ελέγξτε αν οι εκτελέσεις πράκτορα είναι μέσα σε sandbox»

Δύο πράγματα το κρίνουν, και τα δύο στον διακομιστή: αν ο κεντρικός υπολογιστής προσφέρει backend και αν το --sandbox είναι ενεργό. Ελέγξτε τα με αυτή τη σειρά.

  1. Μεταβείτε στις Ρυθμίσεις → Διακομιστής → Διαγνωστικά και απόρρητο
  2. Διαβάστε την κάρτα Sandboxing. Το στοιχείο Κεντρικός υπολογιστής είναι το μηχάνημα στο οποίο εκτελείται το cc_server, όχι το μηχάνημα που κοιτάτε. Το πεδίο Backend εμφανίζει Εγγενές sandbox (Seatbelt στο macOS, bubblewrap στο Linux και στο WSL2) ή Χωρίς απομόνωση. Το στοιχείο Σε ισχύ είναι η προτίμηση αυτής της συσκευής, όχι το περιτύλιγμα που χρησιμοποιεί στην πραγματικότητα ο διακομιστής.
  3. Διαβάστε το αρχείο καταγραφής εκκίνησης του διακομιστή. Εκτυπώνει ακριβώς μία από τρεις γραμμές:
    • agent sandbox ON μαζί με τη σημείωση backend — οι εκτελέσεις περιτυλίγονται
    • no OS-native agent sandbox on this host μαζί με υπόδειξη εγκατάστασης όπου υπάρχει — οι εκτελέσεις δεν περιτυλίγονται
    • agent sandbox DISABLED by --sandbox off — σκόπιμη εξαίρεση

Το GET /healthz δεν αναφέρει την κατάσταση του sandbox, οπότε το αρχείο καταγραφής εκκίνησης είναι ο έλεγχος.

Για να απενεργοποιήσετε σκόπιμα το sandbox — ένας κεντρικός υπολογιστής όπου το προφίλ συμπεριφέρεται άσχημα είναι ο λόγος που υπάρχει αυτή η επιλογή — ξεκινήστε τον διακομιστή με --sandbox off ή ορίστε CC_SERVER_SANDBOX=off. Η προεπιλογή είναι on και το on σημαίνει «χρησιμοποίησε ένα backend αν το έχει ο κεντρικός υπολογιστής», ποτέ «απαίτησε ένα».

Δύο περιπτώσεις δεν παίρνουν ποτέ περιτύλιγμα εγγενούς sandbox. Στα Windows η εγγενής ανίχνευση αναφέρει πάντα μη διαθέσιμο και δεν υπάρχει τίποτα να εγκατασταθεί — η αποστολή πράκτορα χρησιμοποιεί none. Το backend microvm είναι ξεχωριστό (διαδραστικά τερματικά και σταθμοί) και περνά από πύλη ανίχνευσης με βάση τον δικό του χρόνο εκτέλεσης. Σε Linux και WSL2 τόσο το bwrap όσο και το socat πρέπει να βρίσκονται στο PATH· χωρίς αυτά, η ανίχνευση αναφέρει μη διαθέσιμο και ονομάζει τα πακέτα που λείπουν.

Σε Linux/WSL2 με εγκατεστημένο το bubblewrap, τα globs μυστικών αρχείων της τυπικής πολιτικής δεν μπορούν να επιβληθούν για αρχεία που δημιουργεί αργότερα ένας πράκτορας. Μια τέτοια εγγενής εκτέλεση πλέον αποτυγχάνει αντί να αγνοεί σιωπηλά τους κανόνες. Επομένως, μια θετική ανίχνευση κατά την εκκίνηση δεν εγγυάται ότι μπορεί να ξεκινήσει μια αποστολή σε Linux. Το --sandbox off είναι σκόπιμη εξαίρεση χωρίς περιορισμούς, όχι υποκατάστατο ορίου ασφαλείας.

Μάθετε τι απαγορεύει ήδη μια λειτουργία

Ενότητα με τίτλο «Μάθετε τι απαγορεύει ήδη μια λειτουργία»

Η λειτουργία αποθηκεύεται ανά χώρο και τροφοδοτεί τον επιλυτή περιορισμών ως επίπεδο προκαθορισμένου λειτουργίας. Οι τρεις από τις τέσσερις λειτουργίες είναι μόνο για ανάγνωση και μια λειτουργία μόνο για ανάγνωση απορρίπτει ευθέως έντεκα κατηγορίες επιδράσεων:

Λειτουργία Worktree Απορρίπτονται από το προκαθορισμένο
Πράκτορας (chat) Εγγράψιμο Τίποτα — ισχύουν οι ενσωματωμένες προεπιλογές
Σχέδιο Μόνο για ανάγνωση Διαγραφή αρχείου, εγγραφή εκτός του worktree, δημιουργία commit, push σε απομακρυσμένο, άνοιγμα pull request, δημοσίευση ανασκόπησης ή συγχώνευση, εγγραφή σε εξωτερικό tracker, εγκατάσταση πακέτου, εκτέλεση διεργασίας, αλλαγή δομής χώρου εργασίας, έλεγχος απομονωμένου περιβάλλοντος (σταθμός)
Ανασκόπηση Μόνο για ανάγνωση Τα ίδια έντεκα. Δεν είναι επιλέξιμη από τον χρήστη — ο συνθέτης προσφέρει μόνο Πράκτορα, Σχέδιο και Ενορχήστρωση
Ενορχήστρωση Μόνο για ανάγνωση Τα ίδια έντεκα

Η πρόσβαση στο δίκτυο και η πρόσβαση σε μυστικά σκόπιμα δεν απορρίπτονται από μια λειτουργία μόνο για ανάγνωση: η έρευνα είναι ο σκοπός της.

Απαιτήστε έγκριση πριν εκτελεστεί μια ενέργεια

Ενότητα με τίτλο «Απαιτήστε έγκριση πριν εκτελεστεί μια ενέργεια»

Η έγκριση είναι απόφαση περιορισμού, όχι ρύθμιση sandbox.

  1. Μεταβείτε στις Ρυθμίσεις → Χώρος εργασίας → Δικαιώματα πρακτόρων
  2. Ορίστε την κατηγορία ενέργειας σε Ερώτηση πρώτα στο πεδίο εφαρμογής χώρου εργασίας, πράκτορα ή χώρου

Μια απόφαση Ερώτηση πρώτα διακόπτει την εκτέλεση και σας ρωτά. Χωρίς συνδεδεμένο εγκριτή αποτυγχάνει κλειστή και η ενέργεια απορρίπτεται. Δείτε τη Ρύθμιση περιορισμών για την πλήρη σειρά επίλυσης.

Ένας πράκτορας δεν μπορεί να κάνει push και δεν το απέρριψα ποτέ

Ενότητα με τίτλο «Ένας πράκτορας δεν μπορεί να κάνει push και δεν το απέρριψα ποτέ»

Διαβάστε τι εμφάνισε το git. Το Control Center policy: … σημαίνει ότι ένας κανόνας απέρριψε το push ή ότι μια Ερώτηση πρώτα έμεινε αναπάντητη. Το … is not linked to this workspace σημαίνει ότι το push στοχεύει αποθετήριο που δεν είναι ούτε του worktree ούτε συνδεδεμένο με τον χώρο εργασίας. Το Control Center has no GitHub credential that can push … σημαίνει ότι η GitHub App δεν είναι εγκατεστημένη σε αυτό το αποθετήριο και κανένα εφεδρικό διαπιστευτήριο δεν μπόρεσε να κάνει push: εγκαταστήστε την εφαρμογή σε αυτό ή συνδέστε το GitHub.

Η κάρτα Sandboxing αναφέρει ότι δεν υπάρχει εγγενές sandbox

Ενότητα με τίτλο «Η κάρτα Sandboxing αναφέρει ότι δεν υπάρχει εγγενές sandbox»

Τότε οι εκτελέσεις πράκτορα σε αυτόν τον κεντρικό υπολογιστή δεν περιτυλίγονται από το Seatbelt ή το bubblewrap και τα υπόλοιπα όρια είναι ό,τι έχετε. Σε Linux και WSL2, εγκαταστήστε και τα δύο εργαλεία που λείπουν — sudo apt-get install bubblewrap socat — και επανεκκινήστε τον διακομιστή· το αρχείο καταγραφής εκκίνησης θα πρέπει τότε να λέει ότι το sandbox είναι ενεργό. Στα Windows δεν υπάρχει εγγενές backend για εγκατάσταση, οπότε σφίξτε τους περιορισμούς αντ’ αυτού: δείτε τη Ρύθμιση περιορισμών.

Ένας πράκτορας έφτασε σε αρχείο εκτός του worktree

Ενότητα με τίτλο «Ένας πράκτορας έφτασε σε αρχείο εκτός του worktree»

Ποιο εργαλείο έφτασε σε αυτό καθορίζει αν αυτό είναι αναμενόμενο.

Τα εργαλεία αρχείων εντός διεργασίας του harness (read, write, edit, apply patch, search, find, search_files) εκτελούνται στη διεργασία του διακομιστή, οπότε κανένα προφίλ sandbox δεν ισχύει γι’ αυτά — το όριό τους είναι ο δικός τους περιορισμός διαδρομών συν οι περιορισμοί. Μια εντολή bash ή το CLI του Claude Code περιτυλίγεται όπου υπάρχει backend και τα καταχωρισμένα checkouts σας είναι απαγόρευσης εγγραφής μέσα σε αυτό το περιτύλιγμα σε κάθε λειτουργία, συμπεριλαμβανομένων των γραφών τους μετά την επίλυση symlink (στο macOS μια διαδρομή στην οποία φτάνετε μέσω /tmp ή /var/folders επιλύεται κάτω από το /private και πλέον απορρίπτονται και οι δύο γραφές). Σε έναν κεντρικό υπολογιστή χωρίς backend, τίποτα από αυτά δεν ισχύει. Σε κάθε περίπτωση, οι περιορισμοί μπορούν να απορρίψουν ευθέως την Εγγραφή εκτός του worktree.