Skip to main content
La mensajería entre sesiones requiere Claude Code v2.1.224 o posterior en macOS y Linux, incluido Linux dentro de WSL 2. En Windows nativo, requiere Claude Code v2.1.234 o posterior. Cuando una sesión cumple los requisitos, la mensajería está activada sin necesidad de habilitar nada. Consulta Disponibilidad para conocer los requisitos del proveedor y cómo confirmar que una sesión la tiene.
La mensajería entre sesiones permite que Claude entregue un mensaje de una de tus sesiones de Claude Code a otra. Cuando un cambio en una sesión rompe lo que otra está construyendo, Claude puede advertir a esa sesión antes de que lo notes. Cuando una sesión resuelve una pregunta en la que otra está bloqueada, Claude puede enviar la respuesta entre sesiones. Un mensaje es un fragmento de texto que un Claude escribe a otro, nunca el historial de conversación o archivos del remitente. Para mover una conversación completa o su contexto, reanuda la sesión en su lugar. Claude utiliza dos herramientas para esto: ListAgents para descubrir qué agentes puede alcanzar, y SendMessage para entregar un mensaje a uno de ellos por nombre. Con la misma herramienta SendMessage, Claude también puede enviar mensajes a subagentes y compañeros de equipo de agentes dentro de una única sesión o equipo. Esta página cubre mensajes entre tus sesiones independientes.

Cuándo usar mensajería entre sesiones

Usa mensajería cuando una de tus sesiones tiene algo que otra sesión necesita a mitad de la tarea. Claude puede enviar un mensaje por su cuenta cuando ve la necesidad, por ejemplo después de hacer un cambio que afecta el trabajo que otra sesión está haciendo, o puedes pedirle que envíe uno. Los casos comunes son:
  • Entregar un hallazgo: cuando una sesión descubre un cambio que rompe algo o toma una decisión, Claude lo resume para la sesión que trabaja en el área afectada, en lugar de que lo re-expliques allí.
  • Coordinar worktrees paralelos: cuando las sesiones trabajan el mismo repositorio en worktrees separados, Claude puede decirle a las otras sesiones qué se implementó.
  • Obtener estado del trabajo de larga duración: haz que una migración o ejecución de prueba informe a la sesión que estás observando, o pregúntale desde allí. Si esa sesión está en esta máquina, Claude también puede pedirle un aviso cuando la sesión se quede inactiva o salga.
  • Enviar mensajes entre máquinas: alcanza una de tus sesiones en otra máquina o en la web.
Usa mensajería entre sesiones independientes que inicias y diriges tú mismo. Claude Code tiene una característica dedicada para cada una de las otras formas de ejecutar o alcanzar múltiples sesiones, así que usa la construida para lo que estás haciendo en su lugar:
  • Para continuar una conversación en otra terminal, o compartir su contexto con una nueva sesión, reanuda la sesión
  • Para un equipo coordinado de sesiones que Claude genera y supervisa, usa equipos de agentes
  • Para observar y dirigir muchas sesiones desde un lugar, usa vista de agentes
  • Para dirigir una sesión tú mismo desde tu teléfono u otro dispositivo, en lugar de que las sesiones se envíen mensajes entre sí, usa Control Remoto
  • Para insertar eventos externos, como resultados de CI o mensajes de chat, en una sesión, usa canales

Enviar un mensaje a otra sesión

Cuando una de tus sesiones aprende algo que otra sesión necesita, como un hallazgo, un estado o una decisión, Claude lo pasa en lugar de que copies y pegues entre terminales. Claude descubre el destino con ListAgents y envía con SendMessage, así que nunca llamas a ninguna herramienta tú mismo. Claude puede decidir enviar un mensaje sin ser preguntado, y también puedes solicitar uno. Para solicitar uno tú mismo, dile a Claude qué quieres que la otra sesión sepa o haga. Este ejemplo es un mensaje que escribes, no un mensaje que Claude envía:
Claude escribe el mensaje real en sí, así que tu mensaje puede dejar el contenido a Claude. Este mensaje solicita un resumen sin dictar su redacción, y lo que Claude envía varía:
Para nombrar el destino tú mismo, menciona la sesión en tu mensaje: escribe @ seguido de las primeras letras del nombre de la sesión y elige la sesión del typeahead, de la misma manera que @-mencionas un subagente. Requiere Claude Code v2.1.232 o posterior. Claude Code inserta la mención, como @api-worker, y le dice a Claude qué sesión nombra, para que Claude pueda enviar un mensaje a esa sesión sin listar primero tus sesiones. Este mensaje nombra el destino con una mención:
El typeahead lista tus otras sesiones activas en esta máquina. Dos casos necesitan más que las primeras letras de un nombre:
  • Una sesión más allá de esta máquina: una sesión en la nube o Control Remoto aparece en el typeahead solo después de que Claude haya listado o enviado mensajes a tus sesiones más allá de esta máquina, así que pídele a Claude que las liste primero.
  • Un nombre con un espacio u otros caracteres fuera de letras, dígitos, guiones e guiones bajos: escríbelo entre comillas dobles, como @"release notes". Cuando eliges la sesión del typeahead, Claude Code inserta las comillas por ti.
También puedes escribir la mención sin el selector. Cuando más de una sesión activa responde al nombre mencionado, Claude te pregunta cuál quieres decir antes de enviar. Para ver cómo se ve el mensaje que Claude escribe cuando llega, incluido un ejemplo de uno, consulta cómo se ve un mensaje.

Entrega de mensajes

El Claude receptor lee el mensaje entre llamadas de herramientas durante un turno activo, así que una herramienta en ejecución nunca se interrumpe. Cuando la sesión receptora está inactiva, Claude Code inicia un nuevo turno con el mensaje. Un mensaje de otra sesión llega como texto plano. Si menciona un archivo o un recurso MCP con @, Claude ve la mención tal como está escrita y Claude Code no adjunta nada, ya sea que el mensaje inicie un nuevo turno o llegue durante uno. Claude aún puede abrir una ruta mencionada en la máquina receptora con sus propias herramientas, sujeto a los permisos de esa sesión. Antes de v2.1.251, una mención @ en un mensaje que inició un nuevo turno adjuntaba el archivo o recurso MCP en el lado receptor. Claude Code rechaza un mensaje en los siguientes casos: La sesión receptora verifica cada mensaje que llega contra sus propios controles de entrada, y la verificación termina en uno de tres resultados:
  • Entregado: Claude Code pasa el mensaje al Claude receptor.
  • Retenido: Claude Code deja el mensaje de lado sin entregar. Un mensaje retenido llega a Claude solo cuando lo apruebas o un modo o cambio de configuración posterior lo permite.
  • Rechazado: Claude Code descarta el mensaje sin entregarlo.
Una vez entregado, el mensaje cuenta hacia uso como un mensaje que escribes, y el Claude receptor puede responder al remitente de la misma manera, excepto en el caso de una sola dirección entre máquinas. Los límites de permisos permanecen por sesión. Claude recibe instrucciones de nunca pedir a otra sesión una acción que fue denegada o bloqueada en su propia sesión, o que sus propias configuraciones de permisos bloquearían, y de enrutar ese trabajo de vuelta a ti. En el lado receptor, los propios mensajes de permiso y reglas de la sesión receptora aún se aplican a cualquier cosa que el mensaje solicite.

Obtener un aviso cuando otra sesión se queda inactiva

Claude puede pedirle a una de tus sesiones en esta máquina que envíe un aviso cuando esa sesión se quede inactiva o salga. Inactivo aquí significa que la sesión terminó un turno sin nada en cola. Úsalo cuando estés esperando una tarea larga en otra sesión y quieras saber cuándo termina en lugar de verificar. Requiere Claude Code v2.1.236 o posterior en ambas sesiones.

Solicitar un aviso

Dile a Claude qué estás esperando. Este mensaje solicita un aviso de la sesión de migración:
Claude se suscribe con la entrada notify_when_idle de la herramienta SendMessage, ya sea adjunta a un mensaje que está enviando de todas formas o por su cuenta. Por su cuenta, Claude Code se suscribe sin iniciar un turno o gastar tokens en la sesión observada, y envía el aviso de inmediato si esa sesión ya está inactiva. Adjunto a un mensaje, Claude Code entrega el mensaje primero y envía el aviso después.

Lo que cada sesión muestra

La sesión observada muestra una línea diciendo que otro proceso pidió ser notificado cuando la sesión esté inactiva. La sesión que pregunta muestra el aviso como una línea que nombra la sesión observada. La línea puede incluir la hora en que terminó el turno de esa sesión y un estado de una línea de ese turno. Si la sesión que pregunta está inactiva, Claude Code inicia un nuevo turno con el aviso.

Límites

El aviso es de una sola vez: Claude Code lo envía una vez desde la sesión observada, y ninguna sesión sondea la otra. Si no llega ningún aviso dentro de 12 horas, Claude Code descarta la suscripción y le dice a Claude, para que no siga esperando. Los controles de entrada de cada lado se aplican a un aviso como un mensaje:
  • refuse en cualquier lado: nada llega. La sesión observada descarta la solicitud sin registrar o responder, así que la suscripción expira sin respuesta después de 12 horas, y una sesión que pregunta con refuse nunca se suscribe.
  • hold en cualquier lado: el aviso llega con menos. La sesión observada deja fuera el estado de una línea, y la sesión que pregunta muestra el aviso en tu transcripción sin entregarlo a Claude.
Solo el Claude en tu conversación principal puede suscribirse, y solo a tus sesiones en esta máquina. Cuando un subagente o un compañero de equipo de agentes establece notify_when_idle, Claude Code no hace suscripción y le dice así. Cuando Claude pide un aviso de cualquier otro agente, como un compañero, un subagente o una sesión más allá de esta máquina, Claude Code rechaza toda la llamada, incluido cualquier mensaje adjunto, e informa el rechazo a Claude para que pueda reenviar el mensaje sin la solicitud.

Ver qué sesiones Claude puede alcanzar

Claude encuentra el destino de un mensaje por su cuenta, así que no necesitas ejecutar nada antes de pedirle que envíe. Para ver por ti mismo qué sesiones Claude puede alcanzar, ejecuta el comando /list-agents. La primera línea, cuando está presente, es el nombre de esta propia sesión, el que tus otras sesiones usan para enviarle mensajes. Las filas debajo son las sesiones que Claude puede alcanzar:
  • Subagentes: agentes que se ejecutan dentro de la sesión actual.
  • Compañeros: los propios compañeros de equipo de agentes de esta sesión. Antes de v2.1.239, los compañeros no aparecían en el listado, aunque Claude ya podía enviarles mensajes por nombre.
  • Tus otras sesiones locales: sesiones de Claude Code que se ejecutan en la misma máquina, incluidas sesiones en segundo plano. Una sesión aparece solo cuando vincula un socket de bandeja de entrada.
  • Tus sesiones en la nube: tus sesiones de Claude Code en la web, mostradas mientras esta sesión está conectada a Control Remoto. Claude Code las etiqueta como cloud en el listado.
  • Tus sesiones de Control Remoto en otras máquinas: mostradas mientras esta sesión está conectada a Control Remoto, y etiquetadas como Remote Control. Claude Code muestra offline como el estado de una sesión cuya conexión de Control Remoto se ha caído.
Esta sesión no es una de las filas. Si Claude dirige un mensaje al nombre de esta propia sesión, Claude Code lo rechaza y le dice a Claude que el destino es la sesión actual. Antes de v2.1.239, el listado no mostraba el nombre de esta sesión, y Claude Code reportaba un mensaje enviado a él como un agente que no podía encontrar. Mientras esta sesión está conectada a Control Remoto, Claude Code retiene algunos detalles de tus sesiones locales de la salida /list-agents, sin cambiar lo que Claude mismo ve cuando busca una sesión para enviar un mensaje:
  • Directorios de trabajo: deja fuera el directorio de trabajo de cada sesión local.
  • Nombres de sesión: deja fuera cualquier nombre de sesión que no pueda atribuir a una persona, así que una fila dejada sin nombre lee (unnamed session).
  • La primera línea: deja fuera la línea con el nombre de esta propia sesión a menos que escribas ese nombre en esta terminal, con --name o con /rename y el nombre, desde que lanzaste o reanudaste la sesión por última vez.
Cuando la salida lista algo, termina con una nota diciendo que los detalles fueron retenidos. Ejecutar /rename seguido de un nombre no utilizado en el teclado de una sesión propia le da a esa sesión un nombre que aparece en la salida. Claude Code lee tus listas de sesiones en la nube y Control Remoto más nuevas primero y se detiene después de un número acotado de páginas para cada una. Si tu cuenta tiene más de esas sesiones de las que caben, Claude Code no lista las más antiguas, y Claude no puede enviarles mensajes por nombre. Cuando esto sucede, Claude Code lo dice en el listado, y Claude ve la misma nota cuando envía un mensaje. Claude dirige una sesión más allá de esta máquina por nombre, igual que una sesión local. Consulta Enviar mensajes a sesiones en otras máquinas para ver cómo viajan esos mensajes. Una sesión responde al nombre que estableces con el comando /rename o la bandera --name. Cuando no estableces uno, Claude Code nombra la sesión en sí. Para una sesión interactiva, ese es el nombre mostrado en listados de sesiones en ejecución. Cuando renombras una sesión, Claude Code también actualiza el registro compartido que tus otras sesiones usan para buscar el nombre de la sesión. Si no puede actualizar ese registro, te advierte en la salida /rename que otras sesiones aún pueden mostrar el nombre antiguo. Ejecuta la sesión con --debug, y Claude Code registra la causa de la actualización fallida. Cuando renombras una sesión, o inicias o reanudas una interactiva, con un nombre que otra sesión activa en esta máquina ya usa, Claude Code deja el nombre con la sesión que ya lo tiene y renombra el tuyo a una variante. Las sesiones aún pueden compartir un nombre, por ejemplo cuando una de ellas ejecuta una versión anterior de Claude Code o el nombre compartido es uno que Claude Code generó. A menos que esta sesión esté conectada a Control Remoto, Claude Code muestra el directorio de trabajo de cada sesión local en la salida /list-agents, así que puedes distinguir sesiones con el mismo nombre cuando se ejecutan en directorios diferentes. Claude dirige el mensaje de una de dos maneras, dependiendo de cuántas sesiones activas respondan al nombre:
  • Una sesión responde al nombre: Claude Code entrega el mensaje solo en el nombre.
  • Varias sesiones comparten el nombre, o Claude Code no pudo verificar en todas partes donde se ejecutan tus sesiones: Claude agrega un identificador corto a cada fila de su listado y usa el identificador en la dirección.

Enviar mensajes a sesiones en otras máquinas

Cómo viaja un mensaje, y si pasa por servidores de Anthropic, depende de dónde se ejecuta la sesión de destino: Iniciar una conversación con una sesión en otra de tus máquinas requiere Claude Code v2.1.225 o posterior y un destino que aparezca en el listado. Antes de v2.1.225, Claude solo podía responder a un mensaje que llegaba de uno. La entrega en la misma máquina funciona dondequiera que la característica esté habilitada. Cada sesión se registra en archivos en el disco. Cuando Claude lista o envía mensajes a tus sesiones locales, Claude Code lee esos archivos para encontrar las sesiones, así que dos sesiones pueden alcanzarse mutuamente solo cuando pueden ver los mismos archivos. Un contenedor tiene su propio sistema de archivos, así que una sesión dentro de él y una sesión en el host no pueden alcanzarse mutuamente. Dos sesiones dentro del mismo contenedor aún pueden enviar mensajes entre sí, incluido en un ejecutor auto-hospedado. Una sesión dentro de WSL 2 y una sesión nativa de Windows en la misma computadora tampoco pueden alcanzarse mutuamente, porque se registran bajo directorios de inicio diferentes y escuchan en tipos de socket diferentes. Mientras esta sesión está conectada a Control Remoto, cuando envías un mensaje a una sesión en otra de tus máquinas, Claude Code muestra el mensaje en la conversación de esa sesión bajo el nombre de Control Remoto de esta sesión. El Claude en esa máquina puede responder a ese nombre. Por ejemplo, cuando esta sesión está conectada a Control Remoto como laptop-graceful-unicorn y envías un mensaje a tu escritorio, ves el mensaje en la sesión de escritorio bajo laptop-graceful-unicorn. Si esta sesión no está conectada a Control Remoto cuando Claude envía a una sesión más allá de esta máquina, el mensaje aún se va, pero sin una dirección de respuesta, así que el Claude receptor no puede responder. Claude es informado de esto cuando envía. Para requerir tu aprobación antes de que cualquier mensaje vaya más allá de esta máquina, establece isolatePeerMachines.

Cómo una sesión trata un mensaje entrante

Cuando la sesión A envía un mensaje a la sesión B, Claude Code le dice al Claude de B que el mensaje vino de otra sesión, no de ti, y limita lo que el mensaje puede hacer:
  • No puede aprobar nada: un mensaje de otra sesión nunca cuenta como tu consentimiento, así que no puede responder a un mensaje de permiso pendiente en tu nombre.
  • No puede cambiar configuración: Claude Code instruye al Claude receptor a nunca cambiar configuraciones de permisos, CLAUDE.md u otra configuración porque otra sesión lo pidió.
  • Los comandos no se ejecutan: un comando en el texto del mensaje, como /compact, llega como texto plano. Claude Code nunca lo ejecuta.
  • Los mensajes de permiso aún se disparan: si actuar sobre el mensaje requiere un permiso que la sesión receptora no tiene, ves el mismo mensaje que verías para cualquier otro trabajo.

Cómo se ve un mensaje

Cuando llega un mensaje, Claude Code lo muestra en la conversación como una vista previa de una línea atenuada, y la línea de vista previa permanece en la conversación después. La vista previa lleva el nombre del remitente y la primera línea del mensaje, cortada con cuando es larga, como › Message from @api-worker: Schema migration finished (ctrl+o to expand). Antes de v2.1.247, Claude Code mostraba el mensaje que llegaba en su totalidad en lugar de una vista previa. Cualquiera de estos muestra el texto completo:
  • Presiona Ctrl+O para abrir el visor de transcripción y lee el texto completo bajo el nombre de sesión del remitente.
  • En una sesión iniciada con --verbose, Claude Code muestra el texto completo en lugar de la vista previa.
La vista previa acorta solo lo que ves. Ya sea que la expandas o no, Claude lee el mensaje completo. Claude recibe el mensaje con el nombre del remitente y una dirección de respuesta, excepto para un mensaje de una sola dirección entre máquinas, que no lleva dirección de respuesta. Más allá del nombre y la dirección de respuesta, el Claude receptor obtiene el texto del mensaje, nunca el historial de conversación o archivos del remitente. Entrega de mensajes cubre menciones @ en el texto. Un mensaje que un subagente escribió llega bajo el nombre de la sesión de envío, con el subagente identificado en el texto del mensaje. Una respuesta a él llega a la conversación principal de esa sesión, no al subagente. Este ejemplo es un mensaje que un Claude escribió a otro, tal como su texto completo se lee cuando lo expandes:

Controlar mensajes entrantes

Establece crossSessionInbound para elegir qué hace una sesión con los mensajes que llegan de tus otras sesiones: Más allá de editar un archivo de configuración, puedes seleccionar el valor en la fila /config Mensajes de tus otras sesiones. Claude Code escribe el valor que seleccionas en tu configuración de usuario. La fila requiere Claude Code v2.1.232 o posterior y no aparece mientras la configuración administrada o la bandera --settings establece la clave, ya que un valor de configuración de usuario no se aplicaría entonces. Claude Code rechaza el atajo /config crossSessionInbound=value para esta clave. Para ver qué valor se aplica, sigue las reglas de precedencia crossSessionInbound en la referencia de configuración. Cuando no se aplica ningún valor, Claude Code decide por mensaje de las dos clases de modo de permiso de las sesiones. Agrupa sesiones que omiten mensajes de permiso en una clase, y todas las otras sesiones en la otra. El modo Plan cuenta como omisión en sesiones con permisos de omisión disponibles, y auto, acceptEdits y dontAsk cuentan como mensajes:
  • La sesión receptora solicita permisos: Claude Code entrega cada mensaje. Retiene uno para tu aprobación solo cuando la sesión de envío se identifica como omitiendo mensajes de permiso.
  • La sesión receptora omite mensajes de permiso: Claude Code retiene cada mensaje para tu aprobación. Entrega uno solo cuando la sesión de envío se identifica como también omitiendo.
Cuando el valor predeterminado retiene un mensaje, Claude Code abre un diálogo de aprobación en la sesión receptora. El diálogo muestra el remitente y una vista previa:
  • Aprobar entrega ese mensaje a Claude.
  • Denegar, o descartar el diálogo, lo descarta.
  • Cuando el diálogo permanece sin respuesta pasado el plazo dialogExpiry, Claude Code lo cierra y descarta el mensaje. El plazo predeterminado es cinco minutos. Mientras ninguna terminal está adjunta a una sesión en segundo plano, Claude Code deja el diálogo abierto pasado el plazo. Después de que adjuntes, Claude Code cierra el diálogo y descarta el mensaje solo si permanece sin respuesta durante un período de plazo completo.
  • Si la clase de modo de permiso de esta sesión cambia mientras los mensajes están retenidos, Claude Code re-aplica las reglas de entrada, entrega los mensajes que ahora acepta, y muestra un aviso.
  • Si un cambio de configuración hace que refuse se aplique mientras los mensajes están retenidos, Claude Code descarta cada mensaje retenido e informa un rechazo a cada remitente que puede alcanzar.
Cuando el remitente es una sesión interactiva en la misma máquina, Claude Code muestra un aviso allí cuando el receptor retiene el mensaje, y un seguimiento cuando el receptor después lo entrega, lo deniega, o expira. Si el receptor lo rechaza, Claude Code muestra un aviso allí que el receptor no está aceptando mensajes entre sesiones y le dice al Claude del remitente que no espere o reenvíe. Claude Code retiene como máximo 100 mensajes, separados de la cola de entrega, y pasado eso descarta los más antiguos.

Sesiones no interactivas

Claude Code vincula un socket de bandeja de entrada para una sesión claude -p como una interactiva, así que un trabajador -p de larga duración puede recibir mensajes y aparece en el listado. Cuando inicias una sesión en modo desnudo, Claude Code no vincula el socket, así que esa sesión no puede recibir mensajes y no aparece en la lista de agentes. Una sesión -p no puede mostrar el diálogo de aprobación. Cuando el valor predeterminado de entrada retiene un mensaje allí, Claude Code lo mantiene para el mismo plazo dialogExpiry que el diálogo usa, cinco minutos por defecto:
  • Antes del plazo: si un cambio de modo o configuración permite el mensaje, Claude Code lo entrega.
  • Pasado el plazo: Claude Code descarta el mensaje e informa que expiró a un remitente que puede alcanzar.
Establece dialogExpiry a "never" para mantener los mensajes retenidos por defecto hasta que la sesión termine. Un mensaje retenido por una configuración explícita hold no expira; Claude Code lo entrega solo cuando un accept se aplica después. Cuando la sesión termina con mensajes aún retenidos, Claude Code los informa como expirados a cada remitente que puede alcanzar. Antes de v2.1.225, no se aplicaba plazo en una sesión -p: un mensaje retenido permanecía retenido a menos que un cambio de modo de permiso durante la ejecución lo entregara, y una sesión que terminaba con mensajes retenidos no reportaba nada a sus remitentes. Para permitir que un trabajador -p tome mensajes desatendido, inicia con crossSessionInbound establecido a accept en su valor --settings. Un accept en tu configuración de usuario también funciona pero se aplica a cada sesión que ejecutas.

El socket de bandeja de entrada de la sesión

Lee esta sección cuando una sesión que esperas no está en la lista de agentes, cuando quieres que un script o hook publique en una sesión, o cuando un comando sandboxed no puede alcanzar el socket. Claude Code vincula un socket de bandeja de entrada para cada sesión con mensajería entre sesiones habilitada, donde otras sesiones en la máquina entregan mensajes. El socket es un socket de dominio Unix en macOS y Linux, incluido Linux dentro de WSL 2, y una tubería con nombre en Windows nativo. Para qué tipos de sesión vinculan uno, consulta Sesiones no interactivas. Puedes encontrar la ruta del socket en dos lugares:
  • /status la muestra en la fila Peer address. La ruta tiene el prefijo uds:.
  • Claude Code la exporta a hooks y comandos Bash como la variable de entorno CLAUDE_CODE_MESSAGING_SOCKET:
    • En una sesión que inicia con mensajería activada, Claude Code exporta la variable antes de que cualquier hook se ejecute, incluido SessionStart.
    • Cada sesión exporta su propio socket, nunca uno heredado de una sesión padre.
En macOS y Linux, Claude Code restringe el socket a tu usuario del sistema operativo. En Windows nativo, en su lugar requiere que cada conexión se autentique primero con una clave que solo tu usuario del sistema operativo puede leer. De cualquier manera, en una máquina compartida las sesiones de otro usuario no pueden entregar a él. En macOS y Linux, Claude Code también rechaza crear el socket en un directorio que no puede aceptar, por ejemplo uno que otro usuario posee, y usa un directorio privado por usuario, /tmp/cc-socks-<uid>, en su lugar. Cuando no puede aceptar ningún directorio, la sesión se ejecuta sin una bandeja de entrada: Claude Code muestra un aviso, /status muestra unavailable y la razón en su fila Peer address, y el registro --debug registra el rechazo completo. Junto a la ruta del socket, Claude Code exporta un token por sesión como CLAUDE_CODE_MESSAGING_TOKEN. Un script que publica en el socket de su propia sesión puede enviar {"type":"auth","token":"<token>"} como la primera línea de su conexión, donde <token> es el valor de CLAUDE_CODE_MESSAGING_TOKEN. Si Claude Code requiere la línea depende de la plataforma:
  • macOS y Linux, incluido WSL 2: la línea es opcional. Claude Code acepta una conexión con o sin ella.
  • Windows nativo: la línea es requerida. Claude Code cierra cualquier conexión cuya primera línea no sea una línea de autenticación válida y no entrega nada de esa conexión.
Abre la conexión solo cuando el mensaje que estás publicando esté listo. Claude Code cierra una conexión que no ha enviado una línea completa dentro de 30 segundos, así que captura la salida de un comando lento primero y luego abre la conexión para enviarlo. Las reglas de propio-hijo abajo dicen cuándo Claude Code consulta el token y cómo trata un mensaje que no puede verificar. Claude Code ejecuta mensajes que llegan en el socket a través de los mismos controles de entrada que cualquier otro mensaje de par, con una excepción y un requisito previo:
  • Mensajes de propio-hijo: cuando no se aplica ningún valor crossSessionInbound, Claude Code entrega un mensaje que verifica vino de los procesos hijo de la sesión, como un hook o comando Bash que publica de vuelta al socket de su propia sesión.
    • En Linux, incluido dentro de WSL 2, Claude Code puede verificar por evidencia de proceso incluso para un hijo que ya ha salido. En macOS puede verificar de esa manera solo mientras el proceso de publicación aún se está ejecutando, y en un contenedor donde Claude Code se ejecuta como ID de proceso 1 no tiene evidencia de proceso en absoluto. En Windows nativo tampoco la tiene.
    • En macOS después de que el proceso de publicación ha salido y en contenedores donde Claude Code se ejecuta como ID de proceso 1, esa evidencia de proceso falta, y Claude Code en su lugar verifica un hijo que envió el CLAUDE_CODE_MESSAGING_TOKEN exportado de la sesión en la línea de autenticación que abrió su conexión. En Windows nativo, ese token es la única forma en que Claude Code verifica un mensaje de propio-hijo.
    • Cuando Claude Code no puede verificar de ninguna manera, trata el mensaje como cualquier otro que no afirma ninguna clase de permiso, así que una sesión que omite mensajes de permiso lo retiene para tu aprobación.
  • Sesiones sandboxed: controla si un comando Bash puede alcanzar el socket desde dentro del sandbox con la configuración de socket Unix del sandbox, sandbox.network.allowAllUnixSockets y sandbox.network.allowUnixSockets.

Restringir mensajería entre sesiones

Más allá de los valores predeterminados por mensaje, puedes estrechar la mensajería de dos maneras. Requiere tu aprobación antes de que cualquier mensaje salga de la máquina, o desactiva la mensajería para una sesión u organización.

Requerir aprobación para mensajes entre máquinas

Establece isolatePeerMachines a true para requerir tu aprobación explícita antes de que cualquier SendMessage alcance una sesión más allá de esta máquina:
Con esto establecido, Claude Code pide tu aprobación antes de que el mensaje de Claude a una sesión más allá de esta máquina se vaya, incluso en modo bypassPermissions, que omite mensajes de permiso ordinarios. Un true de cualquier ámbito de configuración se aplica, así que un archivo de proyecto registrado puede activar el requisito pero no desactivarlo. Claude Code no solicita mensajes entre sesiones en la misma máquina.

Desactivar mensajería entre sesiones

Recibir y enviar son controles separados, así que desactiva la dirección que necesites, o ambas. Usa crossSessionInbound para mensajes que llegan, y reglas de permisos para lo que Claude aquí puede enviar o listar:
  • Dejar de recibir: establece crossSessionInbound a refuse, y Claude Code descarta mensajes de par entrantes sin entregarlos. Desde configuración de proyecto o local, refuse se aplica sobre todas las otras fuentes, y desde tu configuración de usuario se aplica a menos que la configuración administrada o la bandera --settings establezcan un valor.
  • Dejar de enviar y listar: agrega reglas de permiso de denegación específicas de herramienta que nombren SendMessage y ListAgents. Ambas toman el nombre de herramienta desnudo sin especificador.
Los administradores pueden desactivar ambos lados para una organización en configuración administrada, combinando las reglas de denegación con el refuse:
Con esto en su lugar, Claude Code aún vincula el socket de bandeja de entrada de cada sesión, pero descarta cada mensaje que llega en él sin entregar nada a Claude. Denegar SendMessage también elimina la mensajería a subagentes y compañeros de equipo de agentes, ya que la misma herramienta sirve a ambos. Una sesión que rechaza no muestra cambio visible, en su propio /status o en los listados de otras sesiones en la misma máquina, así que para confirmarlo, verifica los archivos de configuración que se aplican a esa sesión en lugar de su estado.

Disponibilidad

La mensajería entre sesiones requiere Claude Code v2.1.224 o posterior en macOS, Linux y WSL 2, y v2.1.234 o posterior en Windows nativo. La disponibilidad, y qué sesiones Claude puede enviar mensajes, también dependen de tu sistema operativo, proveedor y configuración:
  • Sistema operativo: disponible en macOS, Windows y Linux, incluido Linux dentro de WSL 2.
  • Sesiones en esta máquina: disponible en cada proveedor, incluido Amazon Bedrock, Claude Platform en AWS, Google Cloud’s Agent Platform y Microsoft Foundry, y en sesiones que se ejecutan con obtención de bandera de característica desactivada. En esos proveedores, y con obtención de bandera desactivada, la mensajería en la misma máquina requiere Claude Code v2.1.248 o posterior. Claude Code entrega estos mensajes sobre un socket por sesión en tu máquina, nunca a través de servidores de Anthropic. Para evitar que una sesión los reciba, establece crossSessionInbound a refuse.
  • Sesiones más allá de esta máquina: Claude encuentra tus sesiones de Claude Code en la web y tus sesiones en otras máquinas desde una sesión que está conectada a Control Remoto, que necesita un inicio de sesión en claude.ai como autenticación activa de esta sesión y los otros requisitos de Control Remoto. Claude no puede encontrar esas sesiones con una clave API o en Amazon Bedrock, Claude Platform en AWS, Google Cloud’s Agent Platform y Microsoft Foundry.
Para verificar una sesión, escribe /list-agents, también disponible como /peers. El resultado separa una sesión que no tiene la característica de una sesión donde algo más estrecho bloqueó un mensaje, como una herramienta SendMessage faltante o un envío rechazado: En una sesión con mensajería, /status también muestra una fila Peer address con la dirección de bandeja de entrada propia de la sesión, o unavailable y la razón cuando Claude Code no pudo configurar una bandeja de entrada.

Limitaciones

Los límites aquí son propiedades del canal de mensajería en sí y se aplican dondequiera que la característica se ejecute. Para brechas de plataforma y proveedor, consulta Disponibilidad en su lugar.
  • Solo texto plano: Claude envía solo texto plano entre sesiones. Los mensajes de protocolo de equipo de agentes estructurados permanecen dentro de un equipo.
  • El tamaño del mensaje en la misma máquina está limitado: Claude Code rechaza un mensaje a una sesión en esta máquina una vez que su forma serializada pasa aproximadamente un millón de caracteres. El rechazo nombra los tamaños exactos. Nada llega a la sesión receptora.
  • Las ráfagas rápidas a una sesión se rechazan en el remitente: una vez que una ráfaga rápida de mensajes a una sesión en esta máquina alcanza lo que esa bandeja de entrada acepta, Claude Code rechaza más envíos en la sesión de envío. El rechazo nombra la ráfaga y le dice a Claude que agrupe el resto en un mensaje o espere. Antes de v2.1.236, Claude Code reportaba esos envíos como enviados mientras la sesión receptora los descartaba.
  • Los bucles de mensajes se limitan: en la sesión receptora, Claude Code limita la velocidad de mensajes repetidos por remitente, descarta repeticiones idénticas que llegan dentro de una ventana corta, y pone en cola como máximo 50 mensajes aceptados para que Claude lea. Un bucle de mensajes entre dos sesiones por lo tanto se detiene por sí solo. Cuando el límite de velocidad, verificación de repetición o límite de cola descarta un mensaje de una sesión interactiva en esta máquina, Claude Code le dice a esa sesión cuál lo descartó y le dice a su Claude que no reenvíe de inmediato.