એક AI-જનરેટેડ cron job એ એક સ્ટાર્ટઅપમાં દસ સેકન્ડથી ઓછા સમયમાં દરેક સક્રિય Stripe સબ્સ્ક્રિપ્શન ડિલીટ કરી દીધા, જેના કારણે કંપનીની માસિક આવક (MRR) ઘટીને માત્ર $38 થઈ ગઈ. આ ઘટના દર્શાવે છે કે જોખમ ડિપ્લોયમેન્ટ પાઇપલાઇનમાં છે, તે કોડ લખતા લેંગ્વેજ મોડેલમાં નથી.
શું થયું હતું
ગયા અઠવાડિયે BridgeMindAI ની ટીમે જ્યારે ડેશબોર્ડ જોયું ત્યારે માસિક આવક (MRR) માત્ર $38 જ હતી. એક AI મોડેલે કોડની એક જ લાઇન બનાવી હતી જે શેડ્યુલરે આપમેળે ચલાવી હતી. આ લાઇન દરેક ગ્રાહકના રેકોર્ડ માટે Stripe ના subscription-cancellation endpoint ને કોલ કરતી હતી. આ પ્રક્રિયા સાત સેકન્ડમાં પૂર્ણ થઈ ગઈ અને તમામ ગ્રાહકોનો ડેટા ભૂંસી નાખ્યો.
સ્ક્રિપ્ટે ખાલી ડિલીશન ક્યુ (deletion queue) ને બધું જ ડિલીટ કરવાના સંકેત તરીકે ખોટી રીતે વાંચ્યું. આ “empty = all” પેટર્ન જનરેટિવ AI ના આગમન પહેલાં, 1980ના દાયકાથી જ પ્રોડક્શન કોડમાં અસ્તિત્વ ધરાવે છે.
મોડેલ આ માટે જવાબદાર નથી
લોકોએ ઝડપથી AI મોડેલને અવિશ્વસનીય હોવા બદલ દોષ આપ્યો. મોડેલ બદલવાથી પણ આ ભૂલ અટકાવી શકાત નહીં, કારણ કે ખામી માનવ દ્વારા લખાયેલા લોજિકમાં હતી, કોઈ hallucination અથવા પૂર્વગ્રહ (bias) માં નહીં.
વાસ્તવિક નિષ્ફળતાઓ આર્કિટેક્ચરલ હતી:
- સ્ક્રિપ્ટમાં લાઈવ પ્રોડક્શન Stripe API key સંગ્રહિત હતી જે સબ્સ્ક્રિપ્શન રદ કરી શકતી હતી.
- તે કોઈપણ રનટાઇમ સુપરવિઝન વગર ચાલ્યું.
- કોડ જનરેશન અને એક્ઝિક્યુશન વચ્ચે કોઈ માનવ ચેકપોઇન્ટ નહોતો.
આ ખામીઓને કારણે એક નાની ભૂલ (bug) સેકન્ડોમાં આવકના સ્ત્રોતને નષ્ટ કરી દીધો.
કોઈપણ ઓટોનોમસ પાઇપલાઇન માટે ત્રણ સુરક્ષા પ્રશ્નો
કઈ કામગીરી અફર (irreversible) છે? સબ્સ્ક્રિપ્શન રદ કરવું, રેકોર્ડ ડિલીટ કરવો અથવા રિફંડ આપવું જેવી બાબતો પાછી ખેંચી શકાતી નથી. તેમને read-only ક્વેરીઝ કરતા વધુ સુરક્ષાની જરૂર છે.
એજન્ટ પાસે કયા ક્રેડેન્શિયલ્સ (credentials) છે? કોઈ ઓટોનોમસ પ્રક્રિયાને માસ્ટર Stripe key આપવી એ અબાધિત સત્તા આપવા સમાન છે. 'least-privilege' સિદ્ધાંત લાગુ કરો: માત્ર જરૂરી કાર્ય જ કરી શકે તેવા scoped keys નો ઉપયોગ કરો.
માનવ ચેકપોઇન્ટ ક્યાં છે? માત્ર કોડ રિવ્યુ પૂરતો નથી. કોડ જનરેશન પછી અને કોઈપણ વિનાશક પગલા લેતા પહેલા એક ગેટ (gate) મૂકો.
વ્યવહારુ સુરક્ષાના નિયમો (Safety rails)
- Dry-run gate – કોઈપણ ડિલીટ અથવા કેન્સલ કોલ કરતા પહેલા, નિર્ધારિત લક્ષ્યોને લોગ (log) કરો. જો યાદી ખાલી હોય અથવા અસાધારણ રીતે મોટી હોય, તો પ્રક્રિયા અટકાવો અને માનવને જાણ કરો.
- Scoped credentials – ડિફોલ્ટ તરીકે read-only keys નો ઉપયોગ કરો. જ્યારે કોઈ કાર્ય સબ્સ્ક્રિપ્શન રદ કરવાનું હોય, ત્યારે એક સમયે માત્ર એક જ કસ્ટમર ID પર કામ કરી શકે તેવી પ્રતિબંધિત કી (restricted key) બનાવો.
- Human-in-the-loop prompt – કોઈ ચેનલ (દા.ત., Slack) પર ટૂંકો સંદેશ મોકલો જેમ કે “હું 47 સબ્સ્ક્રિપ્શન રદ કરવા જઈ રહ્યો છું. પુષ્ટિ કરો?” આમાં ખર્ચ નહિવત છે; પરંતુ સુરક્ષાનો લાભ ઘણો મોટો છે.
આ પગલાં કોઈપણ મોડેલ દ્વારા લખાયેલા કોડ માટે કામ કરશે કારણ કે તેઓ જનરેટરને નહીં, પરંતુ એક્ઝિક્યુશન એન્વાયરમેન્ટને સુરક્ષિત કરે છે.
ઓટોનોમસ એજન્ટ્સ માટે પ્રોડક્શન ચેકલિસ્ટ
- દરેક કામગીરીને read, reversible, અથવા irreversible તરીકે વર્ગીકૃત કરો.
- તમામ irreversible ક્રિયાઓ માટે સ્પષ્ટ માનવ મંજૂરીની જરૂરિયાત રાખો.
- ક્રેડેન્શિયલ્સને કાર્ય માટે જરૂરી લઘુત્તમ પરમિશન સુધી મર્યાદિત કરો.
- રેકોર્ડ્સ ડિલીટ અથવા મોડિફાય કરતા લૂપ્સ (loops) પર સાઈઝ લિમિટ લગાવો.
- એજન્ટ્સને પહેલા સેન્ડબોક્સ (sandbox) માં ચલાવો જે પ્રોડક્શન ડેટા જેવું જ હોય; લાઈવ ડેટાને સ્પર્શતા પહેલા પરિણામની ખાતરી કરો.
- એક્ઝિક્યુશન પહેલા એજન્ટની યોજનાને સરળ ભાષામાં લોગ કરો જેથી રિવ્યુઅર એક નજરમાં ઈરાદો સમજી શકે.
આ ચેકલિસ્ટનું પાલન કરવાથી “એકવાર ચલાવો અને ભૂલી જાઓ” તેવા સ્ક્રિપ્ટને એક નિયંત્રિત વર્કફ્લોમાં બદલી શકાય છે, જેને જો કંઈ ખોટું લાગે તો ઓડિટ કરી શકાય છે અને અટકાવી શકાય છે.
બોધ સ્પષ્ટ છે: પ્રક્રિયા પર વિશ્વાસ કરો, મોડેલ પર નહીં.
