Codex ने sub-agent prompt encryption शुरू किया
(github.com/openai)- Codex CLI के MultiAgentV2 में
spawn_agent,send_message,followup_taskसंदेशों को encrypt किया जाने लगा है, जिससे parent rollout, history और trace में delegation की सामग्री इंसानों के लिए अपठनीय हो जाती है — यह एक audit trail regression है - 5 जून 2026 को merge हुए PR #26210 के बाद
InterAgentCommunication.contentखाली कर दिया जाता है और payload केवलencrypted_contentमें रखा जाता है, जबकि recipient history और communication logs भी ciphertext दर्ज करते हैं - यह समस्या subscription, model या platform से स्वतंत्र है और MultiAgentV2 सक्षम होने वाले 0.137.0 के बाद के builds को प्रभावित करती है; यह encryption tool schema के request validation failure को संभालने वाले #26753 से अलग मुद्दा है
- प्रस्तावित fix यह है कि recipient model के लिए encrypted
messageको रखा जाए, साथ ही local audit के लिए एक अनिवार्य plaintext field भी संग्रहीत की जाए; routing के लिए ciphertext या ID का उपयोग हो और plaintext audit data पर वही size limits लागू हों spawn_agentके लिए prototype एक अलग snapshot commit में लागू किया गया है, लेकिनsend_message,followup_task, और history, replay, debug screens तक यही contract लागू करना अभी बाकी है; issue अभी भी Open है
प्रभाव का दायरा और regression की शर्तें
- Encryption change PR #26210 5 जून 2026 को merge हुआ था, और इसे शामिल करने वाले तथा MultiAgentV2 सक्षम किए गए 0.137.0 के बाद के builds प्रभावित हैं
- प्रभावित tools हैं
spawn_agent,send_message,followup_task; यह subscription, model, operating system या terminal environment पर निर्भर नहीं है - यह local environment state का नहीं, बल्कि merged code behavior का regression है, इसलिए Codex doctor report यहाँ लागू नहीं होती
- reproduction steps इस प्रकार हैं
- PR #26210 शामिल करने वाले build में MultiAgentV2 सक्षम करें
- model से
spawn_agent,send_message,followup_taskमें से किसी एक को call करवाएँ - parent rollout, history या trace में sub-agent task को देखें
- task या message body की जगह केवल ciphertext दिखाई देता है
गायब हुई local audit जानकारी
- encrypted delegation अपने-आप में privacy enhancement के रूप में समझी जा सकती है, लेकिन मौजूदा implementation local rollout history, trace summaries, और parent-side audit/debug screens से भी इंसानों के पढ़ने योग्य content हटा देती है
- नतीजतन, बाद में rollout review के दौरान इन सवालों का जवाब देना कठिन हो जाता है
spawn_agentने child agent को कौन-सा task दिया था- sub-agent को कौन-सा message भेजा गया था
- किसी विशेष child thread को क्यों बनाया गया था
- Issue #26753 उस समस्या के बारे में है जिसमें encryption tool schema request validation के दौरान 400 error लौटाता है; यह issue schema approval के बाद की auditability और debuggability पर केंद्रित है
- लक्ष्य encrypted transport को हटाना नहीं, बल्कि encryption बनाए रखते हुए local स्तर पर delegation content को पढ़ने योग्य रखना है
मौजूदा code में data flow
InterAgentCommunication::new_encrypted()contentको empty string से initialize करता है और payload को केवलencrypted_contentमें रखता है- सामान्य constructor
new()plaintext कोcontentमें रखता है औरencrypted_contentको खाली छोड़ता है - encrypted constructor इसका उल्टा करता है:
contentखाली औरencrypted_contentमें value
- सामान्य constructor
to_model_input_item()मेंencrypted_contentहोने पर सिर्फNEW_TASKयाMESSAGEheader और encrypted payload कोResponseItem::AgentMessageमें डाला जाता है- इसलिए runtime में केवल
contentभर देने से readableResponseItemअपने-आप persist नहीं होता - एक अलग local audit storage path की ज़रूरत है
- इसलिए runtime में केवल
communication_from_tool_message()tool केmessageको सीधेnew_encrypted()में भेजता है, जिससे plaintextcontentके बिना communication object बनता हैsend_messageऔरfollowup_taskargument handling सिर्फtargetऔर encryptedmessageको deserialize करती है- empty
messageको reject किया जाता है, लेकिन साथ में कोई अलग plaintext field नहीं है - shared message transport path इसी value का उपयोग
InterAgentCommunicationबनाने में करती है
- empty
history और logs में ciphertext क्यों बचा रहता है
- receiver-side recording path
to_model_input_item()से बने model-facingResponseItemको conversation history और rollout में save करता है- encrypted communication में इस item में readable audit text नहीं, बल्कि encrypted transport payload शामिल होता है
- rollout में
InterAgentCommunicationMetadataऔर वहResponseItemसाथ में persist होते हैं
- structured communication log भी
contentखाली होने परencrypted_contentको event केcontentके रूप में substitute करता है - इस structure में इंसानों के पढ़ने वाले message fields में भी ciphertext चला जाता है, इसलिए transport encryption बनाए रखने और local audit data को सुरक्षित रखने की ज़रूरतें अलग नहीं हो पातीं
प्रस्तावित dual-content contract
- मौजूदा encrypted
messageको recipient model transport payload के रूप में बनाए रखा जाए - हर MultiAgentV2 communication tool में एक अनिवार्य plaintext audit field जोड़ी जाए
spawn_agent:task_messagesend_message,followup_task:task_messageयाmessage_textजैसा कोई consistent नाम
- handler boundary पर खाली plaintext audit value को reject किया जाए
InterAgentCommunicationमें दोनों values साथ रखी जाएँencrypted_content: encryptedmessagecontent: इंसानों के पढ़ने योग्य audit copy
to_model_input_item()को न बदला जाए, ताकि recipient model को local audit copy नहीं, बल्कि सिर्फ ciphertext ही मिले- parent tool calls और rollout में plaintext field persist की जाए, और structured trace के interaction edges तथा local communication logs में भी इसे रखा जाए
- tool calls और child transport items के correlation के लिए plaintext match नहीं, बल्कि ciphertext या ID का उपयोग किया जाए
- plaintext field audit metadata है; यह encrypted transport identifiers का विकल्प नहीं है
- नए plaintext audit fields पर संबंधित delegation message जैसी ही enforced size limits लागू हों, ताकि rollout या context items अनियंत्रित रूप से बड़े न हों
spawn_agent prototype और बाकी काम
ignatremizov@df9a7c4snapshot commitspawn_agentके लिए प्रस्तावित structure लागू करता है- v2
spawn_agentschematask_messageको required field घोषित करता है task_messagevalidation के बाद plaintext और ciphertext दोनों को साथ compose किया जाता हैcontentमें plaintext audit copy जाती हैencrypted_contentमें recipient model के लिए encrypted payload बना रहता है
- rollout trace summaries में भी audit content और transport matching content को अलग किया गया है, और ciphertext से transport को link करते हुए plaintext audit content लागू किया जाता है
- बाकी काम यह है कि इसी dual-content contract को
send_messageऔरfollowup_taskपर भी लागू किया जाए, और सभी user-facing history, replay, debug screens ciphertext की जगह audit copy पढ़ें
completion criteria और current status
- parent rollout और history में v2
spawn_agent,send_message,followup_taskका plaintext पढ़ा जा सकना चाहिए - encryption enabled होने पर भी child model को सिर्फ encrypted transport payload ही मिलना चाहिए
- structured rollout trace edges में size-limited plaintext
message_contentहोना चाहिए - communication logs में plaintext audit content उपलब्ध हो तो उसी का उपयोग हो, और readable message fields में ciphertext substitute न किया जाए
- resume/replay में audit copy सुरक्षित रहे, लेकिन उसे child model context में inject न किया जाए
- मौजूदा plaintext v1 communication behavior नहीं बदलना चाहिए
- तीनों v2 tools के लिए readable local audit data और encrypted recipient model input दोनों को साथ verify करने वाले regression tests आवश्यक हैं
- उपलब्ध पेज के अनुसार issue अभी Open है, और upstream repository में fix merge होने का कोई परिणाम नहीं दिखता
1 टिप्पणियां
Hacker News राय
यह शीर्षक आसानी से गलत समझा जा सकता है। सटीक रूप से इसका मतलब है कि Codex ने sub-agent prompts को encrypt करके users से छिपाना शुरू कर दिया है
मूल शीर्षक था “Codex starts encrypting prompts, uses ciphertext for inference instead”
ultramode काम को कई sub-agents में बांटता है। पहले यह mode सिर्फ web UI में उपलब्ध था, और शायद पुराने pro mode के बराबर थाअगर इसे agents के आपसी interaction वाले पूरे reinforcement learning rollouts पर train किया गया है, तो लगता है OpenAI इन prompts को raw reasoning traces की तरह treat कर रहा है, ताकि दूसरे लोग इन्हें सीधे training में इस्तेमाल न कर सकें
dedicated compression endpoint जो opaque compressed blobs लौटाता है, उसके बारे में भी संकेत हैं कि वह text नहीं बल्कि conversation का latent-space representation हो सकता है, और OpenAI की compression fidelity अन्य कंपनियों से कहीं ज्यादा है—यह भी इस अनुमान को support करता है। sub-agent prompts पर भी ऐसी ही technique लागू की गई हो सकती है, और यह जानने की जिज्ञासा है कि अलग-अलग model types के sub-agents बनाते समय भी क्या encrypted blobs इस्तेमाल होते हैं
Claude के sub-agents और workflow को देखते हुए मैंने कभी यह निष्कर्ष निकाला था कि “इसे तो शुरू में चलाना ही नहीं चाहिए था”, लेकिन Codex users को orchestrator द्वारा sub-agent को दिए गए encrypted handoff instructions और shell tasks पर tokens आंख मूंदकर खर्च करने पड़ते हैं
हमने भी companies को उनके पसंदीदा या mandated AI provider और अपने API keys चुनने देने, साथ में simple pricing plan देने की कोशिश की थी, लेकिन जल्दी समझ आ गया कि backend prompts customers तक leak हो सकते हैं। detailed execution traces मिल जाएं तो हमारे काम को reverse-engineer करना अपेक्षाकृत आसान हो जाता, इसलिए आखिरकार वह idea छोड़ दिया
अब समझ आया कि coding agent sessions inspect करने वाला मेरा local tool कुछ स्थितियों में काम करना क्यों बंद कर गया था
यह एक दिलचस्प design decision है कि users के computer पर चलने वाले external encrypted commands को कितने लोग स्वीकार करेंगे
user से content encrypt करके छिपाना वही तरीका है जो RIAA copyright infringement की चिंता में DRM के लिए अपनाता था; सवाल है कि क्या यह भी user-hostile choice है
ऐसे behavior की वजह से मैं अब भी Chat Completions endpoint इस्तेमाल कर रहा हूं। OpenAI users को Chat Completions से हटाकर Responses API की ओर subtly push करता रहा है, जिसे obfuscate करना आसान है
Chat Completions में reasoning process को सीधे control किया जा सकता है; experimental features चालू करके और कुछ उलझे हुए options set करके मौजूदा GPT-5.6 model से custom Monte Carlo Tree Search (MCTS) agent भी बनाया जा सकता है
VS Copilot में user API token और model settings के साथ gpt5.5 तक इस्तेमाल किया जा सकता है, लेकिन gpt5.6 family फिलहाल काम नहीं करती। मेरा अनुमान है कि यह इसलिए है क्योंकि वह नए gatekeeping behavior को satisfy करने के लिए
reasoning_effortकोnoneपर force नहीं करताआजकल आने वाले सभी नए models reasoning models हैं, इसलिए recommendations के अनुसार Responses API इस्तेमाल करना चाहिए
यह भी जिज्ञासा है कि क्या वे GPT subscription को वैकल्पिक execution tools में इस्तेमाल होने से रोक सकते हैं। अगर ऐसा नहीं करते, तो यह कोई बड़ी समस्या नहीं है, और
codex cliअपने-आप में हैरानीजनक रूप से साधारण execution tool हैapp-serverarchitecture ऐसे integration को support करने के लिए ही मौजूद है, इसलिए इसे Codex से हटाने के लिए बहुत बड़ा हिस्सा उखाड़ना पड़ेगामैं भी
app-serverके RPC API से बहुत आसानी से integrate कर पाता हूँ, इसलिए Codex का सबसे ज़्यादा उपयोग करता हूँ, और अब सार्वजनिक Codex TUI के बजाय अपने बनाए integration के ज़रिए लगभग सब कुछ इस्तेमाल करता हूँलेकिन अगर local disk पर असली inference input—जैसे prompt वगैरह—को encrypt कर दिया जाए ताकि केवल OpenAI backend ही उसे देख सके, तो integration आसान होने पर भी यह समझना असंभव हो जाएगा कि क्या हो रहा है। यह समझना मुश्किल है कि team ने इसे अच्छा विकल्प क्यों माना
अगर OpenAI भी वही रास्ता अपनाता है, तो मैं फिर Claude पर लौट जाऊँगा या एक और Spark खरीदकर local में चलाने का सोचूँगा
https://github.com/openai/codex/blob/main/codex-rs/responses...
पिछला HN title ऐसा लग रहा था मानो encrypted text पर सीधे inference किया जा रहा हो, जिससे बहुत भ्रम पैदा हुआ। ऐसा करने के लिए अभी ज्ञात स्तर से कहीं अधिक advanced homomorphic encryption चाहिए होगा
पहले agent sub-agent को plaintext prompt भेजता था और वह logs और session data में भी वैसे ही रह जाता था, इसलिए experimental sub-agent feature इस्तेमाल करते समय भी data खोलकर internal behavior देखा जा सकता था
अब Sol या Terra इस्तेमाल करने पर backend द्वारा बनाया गया ciphertext sub-agent को दिया जाता है, और sub-agent इसे फिर OpenAI backend के inference में इस्तेमाल करता है। Luna प्रभावित नहीं लगता, और पूरी session नहीं बल्कि delegated agents के बीच के messages ही encrypt होते हैं
OpenAI का internal inference ciphertext पर नहीं हो रहा है, लेकिन local user को plaintext के बजाय सिर्फ ciphertext दिखता है। इसे स्पष्ट करने के लिए title बदलकर “Codex starts encrypting sub-agent prompts” किया गया
हाल ही में Twitter पर एक report थी कि GPT-5.6 sub-agent ने गलती से user की home directory delete कर दी
अब जब sub-agent क्या करने वाला है यह दिखना बंद हो गया है, तो सोचता हूँ कि कहीं safeguards भी fail तो नहीं हो गए
https://x.com/mattshumer_/status/2076794038456385546?s=20
यह token usage घटाने के लिए client के ज़रिए cache key pass करने का तरीका है। दूसरे sub-task tools इस्तेमाल करने पर इसे आसानी से bypass किया जा सकता है, इसलिए यह model distillation defense नहीं हो सकता
जिज्ञासा है कि encryption ठीक कहाँ हो रहा है। मैं सोचता था कि main agent local में sub-agent को call करता है, लेकिन सवाल है कि क्या Codex ऐसा design है जहाँ local तक पहुँचने से पहले OpenAI server पर ही sub-agent को call किया जाता है
Sol या Terra में OpenAI backend द्वारा generated ciphertext prompt की जगह pass किया जाता है, और sub-agent इसे फिर backend inference में इस्तेमाल करता है। Luna प्रभावित नहीं लगता, और पूरी session नहीं बल्कि delegated agents के बीच के messages ही encrypt होते हैं, इसलिए अब उस content को सिर्फ OpenAI backend ही decrypt कर सकता है
मैं सोच रहा था कि Chinese black-market resale service कल से क्यों काम नहीं कर रही थी; शायद इसी बदलाव की वजह है
मुख्य उद्देश्य ऐसा लगता है कि बड़ी मात्रा में user requests और responses को proxy करके competitive models की training में इस्तेमाल करने की कोशिशों को बाधित करना है
लेकिन paid users के लिए यह बहुत खराब implementation है, क्योंकि समस्या होने पर भी उनके पास वजह जानने का कोई तरीका नहीं होगा और multi-agent feature को ठीक से इस्तेमाल करना मुश्किल हो जाएगा