Credenciales

El panel Credenciales es donde le das a una máquina (un espacio de trabajo, en el editor de ajustes) los secretos que necesita su agente — tokens de git, claves SSH, credenciales de nube, contraseñas de bases de datos — sin que esos secretos entren nunca en la VM. Cada valor se guarda cifrado en tu Mac. Dentro de la VM, el agente solo ve un sustituto (por ejemplo brm_…); cuando una solicitud sale de tu Mac, el proxy cambia el sustituto por el valor real, y solo para los hosts a los que pertenece esa credencial.

Esta página es la referencia campo por campo. El mecanismo — el límite de red, los sustitutos, la limitación por host, la refirma de AWS, la alerta de compromiso — se explica en Credenciales y el límite de red. Si una credencial necesita tu aprobación antes de usarse, y qué escrituras puede hacer, se configura en Salvaguardas.

El panel Credenciales: Identidad de Git con los textos de ejemplo Tu nombre y you@example.com y la leyenda Se escribe en ~/.gitconfig de la VM, un estado vacío que dice Aún no hay credenciales, y los botones Agregar credencial e Importar archivo env…

Nota: Las claves de API y los inicios de sesión de los proveedores de modelos de los agentes de programación (Anthropic, OpenAI, xAI, Moonshot, z.ai, Bedrock, OpenRouter, servidores personalizados) no se configuran aquí. Están en Preferencias › Modelos, o en la sustitución Modelos propia de una máquina.

Identidad de Git

Los dos campos de arriba definen la identidad de autor que se escribe en ~/.gitconfig dentro de la VM:

  • user.name — texto de ejemplo Tu Nombre.
  • user.email — texto de ejemplo [email protected].

«Se escribe en ~/.gitconfig de la VM. Déjelo en blanco para mantener los valores por defecto de git.» No son secretos y no se sustituyen. Los cambios se aplican a una máquina en ejecución al pulsar Guardar.

Archivos de configuración importados

Si la configuración inicial importó archivos de configuración de tu Mac a esta máquina, aparecen en Archivos de configuración importados: cada uno como ~/<ruta>, con cuántos ajustes contiene, cuántos secretos se dejaron fuera y qué ajustes se desactivaron. «Se copian tal cual en la VM. Los secretos se excluyeron: entran como credenciales arriba, así que la VM solo ve uno falso.» El botón de menos quita un archivo de la máquina.

La lista de credenciales

Debajo, el panel enumera solo las credenciales que esta máquina tiene realmente, bajo encabezados de categoría:

EncabezadoQué aparece debajo
GITTokens de acceso personal para GitHub, GitLab, Bitbucket o forjas autoalojadas.
CLOUDAWS, DigitalOcean, Linear, Twilio, contextos de Kubernetes, registros de contenedores.
DATABASESEndpoints de MongoDB, ClickHouse y Elasticsearch.
SSHLa clave propia de la máquina y cualquier clave que hayas importado.
OTHERReglas de sustitución «Other API key».

Cada fila muestra un icono, un nombre y el host o los hosts a los que se aplica la credencial. Su menú ⋯ (o un clic en la fila) ofrece Editar… y Quitar. No se elimina nada del disco hasta que pulsas Guardar.

También puede aparecer un grupo AGENTS, en máquinas que aún conservan una clave de API de agente propia de antes de que los proveedores de modelos pasaran a Modelos. Esas filas no tienen Quitar; su menú ofrece Editar en Modelos…, que abre Preferencias › Modelos (en las propias Preferencias, o en el editor de una máquina remota, cambia al panel Modelos de ese editor).

Sin credenciales, el panel muestra Aún no hay credenciales — «Añade una clave de API, un token o una clave SSH, o importa un archivo env. Los valores reales se quedan en tu Mac; la VM solo tiene un señuelo.»

Añadir una credencial

Agregar credencial abre una lista de tipos de credencial; cada uno abre su propia hoja de edición, que se cierra con Listo:

TipoSubtítulo
Git tokenToken de acceso personal para GitHub, GitLab o Bitbucket
SSH keyImportar una clave privada, o usar la clave propia del espacio de trabajo
AWS credentialsClaves IAM estáticas o SSO — firmadas con SigV4 en la red
DigitalOcean tokenToken de acceso personal de doctl / API
Linear API keyClave de API personal de Linear
Twilio API keySID de cuenta/clave de API + secreto — HTTP Basic en la red
KubernetesUn contexto de clúster (token, certificado de cliente o plugin exec)
Container registryInicio de sesión en un registro para Docker Hub, ghcr.io y otros
DatabaseMongoDB Data API, ClickHouse o Elasticsearch
Other API keyCualquier otro token — tú eliges la variable de entorno y el host o los hosts

Las claves de API de agentes (Anthropic, OpenAI, xAI, Moonshot) no están en esta lista: se configuran en Preferencias › Modelos.

Importar un archivo env

Importar archivo env… lee credenciales de un archivo .env existente o de un ~/.bashrc. El analizador lee líneas KEY=VALUE y export KEY=VALUE, quita las comillas y los # comentarios del final de línea, y conserva la última asignación de un nombre repetido. Nunca ejecuta un shell: un valor que necesitaría expansión ($VAR, $(…)) se omite en lugar de importarse mal, así que se puede usar un .bashrc real sin riesgo.

Las variables aparecen en una hoja de revisión, Import from nombre del archivo, con todos los valores ocultos.

Las variables RECONOCIDOS se asignan a un tipo de credencial:

Variable(s)Se convierte en
GH_TOKEN, GITHUB_TOKENToken de GitHub (pide un Nombre de usuario de Git)
GITLAB_TOKEN, GLAB_TOKENToken de GitLab (pide un Nombre de usuario de Git)
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKENClaves estáticas de AWS
DIGITALOCEAN_ACCESS_TOKEN, DIGITALOCEAN_TOKEN, DO_TOKENToken de DigitalOcean
LINEAR_API_KEYClave de API de Linear
TWILIO_ACCOUNT_SID, TWILIO_API_KEY_SID, TWILIO_API_KEYSID de Twilio
TWILIO_AUTH_TOKEN, TWILIO_API_SECRET, TWILIO_API_KEY_SECRETSecreto de Twilio
ANTHROPIC_API_KEY, OPENAI_API_KEY, XAI_API_KEY, MOONSHOT_API_KEY, KIMI_API_KEYLa clave de API del proveedor correspondiente en los ajustes de modelos: Anthropic, OpenAI, xAI o Moonshot

Las claves de agentes van donde los agentes toman las claves de sus proveedores. En este Mac, van a Preferencias › Modelos, de modo que todas las máquinas que heredan los ajustes globales las reciben, y se guardan en cuanto importas, como cualquier cambio en ese tablero. Para una máquina remota editada desde una ventana de réplica, van a la sustitución Modelos propia de esa máquina y se guardan con Guardar; en las Preferencias de un Mac remoto, a los ajustes globales de ese Mac. Una clave se marca como Already configured cuando el proveedor ya tiene una.

Una variable que coincide con algo que la máquina ya tiene se marca como Already configured — check to overwrite. y queda sin marcar, para que una nueva importación nunca sustituya un secreto sin avisar.

Las variables NO RECONOCIDOS pueden importarse como entradas Other API key. Cada una tiene un campo Host(s) — los hosts en los que se sustituye el sustituto, separados por comas; en blanco significa cualquier host. El nombre de la variable pasa a ser tanto el nombre de la entrada como la variable con la que se exporta el sustituto.

Un valor que es una referencia de 1Password (op://vault/item/field) se importa como una Other API key que guarda la referencia, no el secreto (consulta Otras claves de API).

El botón dice Import N credentials. Importar añade la selección al panel; pulsa Guardar para conservarla.

Claves SSH

Las claves privadas nunca entran en la VM: las firmas las sirve un ssh-agent en el Mac a través de un socket virtual privado, así que la VM puede pedir una firma pero no puede leer la clave.

  • La clave ed25519 propia de la máquina. Las máquinas nuevas tienen marcado Generar un par de claves ed25519 (salvo que la plantilla de valores predeterminados ya aporte una clave). Una vez existe la clave, el editor muestra su clave pública con Copiar y Abrir la página de claves de GitHub, y un interruptor Regenerar. Justo después de generar una clave nueva, la app la muestra para que puedas añadirla a GitHub.
  • Claves SSH importadas. Importar… abre un selector de archivos y luego pide una Etiqueta y, si la clave está cifrada, una Frase de contraseña (guardada en el llavero de macOS). Se admiten claves RSA, ed25519 y ecdsa.
  • Claves de un agente del host. Desde el agente del host… lista las claves que guarda un ssh-agent de tu Mac — para claves que no se pueden copiar como archivo, como una YubiKey detrás de gpg-agent, Secretive o 1Password. Elige el socket del agente (vacío significa el SSH_AUTH_SOCK de la app; el menú ofrece los agentes encontrados en este Mac, p. ej. ~/.gnupg/S.gpg-agent.ssh), haz clic en Cargar y marca las claves que quieras añadir. Solo esas claves se muestran a la máquina.

Los cambios en las claves SSH se aplican cuando la máquina se reinicia.

Tokens de Git (GitHub, GitLab, Bitbucket)

Divididos en los grupos GitHub, GitLab y Bitbucket. Añadir token añade una fila con un Host, un Nombre de usuario y un Token de acceso personal (con un botón para mostrarlo y un enlace a la página de tokens de la forja). El host puede apuntar a github.com, gitlab.com o una instancia autoalojada. El sustituto se escribe en ~/.git-credentials y en la configuración de gh / glab; gh y glab también leen GH_TOKEN / GITLAB_TOKEN.

Linear

Una clave de API personal (texto de ejemplo con la forma lin_api_…, con un enlace a los ajustes de API de Linear). Se exporta como LINEAR_API_KEY y solo se sustituye en las solicitudes a linear.app y sus subdominios. Una clave de Linear es también lo que necesitan las automatizaciones activadas por Linear.

Twilio

«Account SID + Auth Token from console.twilio.com (or an API Key SID SK… + its secret).» Dos campos:

  • Account SID (AC…) or API Key SID (SK…) — el SID es un identificador que viaja en las URL de las solicitudes, así que no se trata como secreto; la VM lo recibe tal cual en TWILIO_ACCOUNT_SID.
  • Auth Token / API Key secret — la VM recibe un sustituto en TWILIO_AUTH_TOKEN; el proxy pone el real en las solicitudes a twilio.com.

Un botón junto al secreto abre la consola de Twilio. El editor también tiene la casilla Requerir aprobación para usar, la misma que Salvaguardas muestra para cada credencial.

Kubernetes

Una fila por contexto de clúster. Bromure escribe en la VM un ~/.kube/config que apunta kubectl al proxy; la identidad real se queda en el Mac. Cada contexto tiene un nombre, una URL del servidor, un certificado de CA opcional (PEM), un Espacio de nombres y un método de autenticación:

  • Token de portador — se sustituye en la red.
  • Certificado de cliente — el certificado y la clave reales los usa el Mac para la conexión con el servidor; la VM recibe uno desechable.
  • Plugin exec — un Comando, unos Args y un intervalo Actualizar (1–60 minutos). El plugin se ejecuta en el Mac y el token nuevo se sustituye; kubectl en la VM nunca lo ejecuta.

Importar archivo… lee un kubeconfig existente en una fila por contexto; Añadir contexto añade uno a mano. Los clústeres que creas con el propio Bromure se gestionan aparte — consulta Clústeres de Kubernetes y registros. Un contexto añadido o editado con la máquina en marcha funciona al Guardar, incluidos la CA de su clúster y su certificado de cliente; la app sigue ofreciendo un reinicio.

DigitalOcean

Un token de acceso personal (texto de ejemplo con la forma dop_v1_…). Se exporta como DIGITALOCEAN_ACCESS_TOKEN y se escribe en la configuración de doctl, así que no hace falta doctl auth init. Se sustituye en las solicitudes a digitalocean.com, incluida la forma de autenticación Basic que usan docker login / doctl registry login contra registry.digitalocean.com.

AWS

Para la CLI aws, los SDK, terraform y herramientas similares. El secreto real nunca llega a la VM: el Mac vuelve a firmar cada solicitud con la clave real, y una solicitud que esquiva el proxy es rechazada por AWS (InvalidSignatureException). Un control Método de autenticación permite elegir:

  • Claves estáticas — ID de clave de acceso, Clave de acceso secreta, un Token de sesión opcional («Opcional — solo STS») y una Región predeterminada, con Abrir la página de credenciales de IAM.
  • SSO / Identity Center — concede acceso a tu carpeta ~/.aws y elige un Perfil SSO de tu ~/.aws/config. Las credenciales temporales se obtienen en el Mac, que ejecuta aws sso login en tu navegador cuando hace falta. (En el cliente para iPhone, iPad y Vision Pro escribes el nombre del perfil.)

Las credenciales de AWS de una máquina también firman las solicitudes a Amazon Bedrock cuando Bedrock está activado en Modelos sin una clave de API de Bedrock. Los cambios de AWS se aplican cuando la máquina se reinicia.

Registros de contenedores

Inicios de sesión por registro para docker pull / docker push. El ~/.docker/config.json de la VM contiene un sustituto, y el proxy pone la contraseña real en las solicitudes a ese registro. El menú Añadir ofrece Docker Hub (docker.io), GitHub Container Registry (ghcr.io), GitLab Container Registry (registry.gitlab.com), Quay (quay.io), Otro host… e Importar config.json… (las entradas cuya contraseña vive en un asistente de credenciales o un llavero se omiten y se cuentan). Cada fila tiene un Host, un Nombre de usuario y una Contraseña o token.

Bases de datos (MongoDB, ClickHouse, Elasticsearch)

Una fila por endpoint HTTPS, agrupadas por motor. Cada una tiene un Nombre opcional, un Host (que también delimita la política de escritura del endpoint), un método de Autenticación — Username + password, Clave de API o Token de portador (MongoDB usa clave de API de forma predeterminada, los demás usuario + contraseña) —, un Nombre de usuario para la autenticación por contraseña, el Secreto y Variable(s) de entorno: los nombres, separados por comas, con los que se exporta el sustituto. El sustituto se reemplaza dondequiera que aparezca: cabecera, query string o cuerpo.

Otras claves de API

Para cualquier servicio que Bromure no gestione por sí mismo. Cada entrada es una regla de sustitución:

  • Nombre — una etiqueta para ti (texto de ejemplo «e.g. Stripe (sandbox)»).
  • Secreto real — la clave (texto de ejemplo sk_live_…). Puedes pegar en su lugar una referencia de 1Password (op://vault/item/field): solo se guarda la referencia, y Bromure obtiene el secreto con la CLI op de 1Password al arrancar y lo actualiza cada 2 minutos. Un enlace Obtener la CLI de 1Password ayuda si no está instalada.
  • Variable de entorno — donde el agente encuentra el sustituto (texto de ejemplo STRIPE_API_KEY). Déjala en blanco para no exportar nada.
  • API host(s) (optional) — nombres de host, separados por comas, sin https:// ni ruta. La clave real solo se sustituye en las solicitudes a estos hosts y sus subdominios. En blanco permite cualquier host.

Advertencia: Una entrada sin host se sustituye en cualquier host y no la cubre la alerta de compromiso: eso es lo que significa «cualquier host». Para mantener bajo control un secreto sin limitar, dale un host o activa para él Requerir aprobación para usar en Salvaguardas.

Perfiles de proveedor de OpenShell

En una máquina cuyo motor de sandbox es OpenShell + Sentry, el panel termina con una sección OpenShell provider profiles (solo en el Mac).

Attach provider profile… importa un perfil de proveedor de OpenShell (el YAML o JSON que escribe openshell profile export). Una hoja pide un Instance name (por omisión, el id del perfil) y un valor para cada una de las credenciales del perfil (las obligatorias están marcadas con *); Attach las añade. Cada valor se convierte en una credencial de esta máquina llamada instancia · credencial, ligada a los hosts y rutas del perfil, bajo las variables de entorno que nombra el perfil. Los endpoints del perfil se añaden como regla, para que sean alcanzables. Bromure guarda los valores reales en el Mac y da sustitutos a la VM, como con cualquier credencial. El botón de la papelera desconecta un perfil y elimina sus credenciales. Un perfil que no declara endpoints se rechaza, ya que sus credenciales no tendrían dónde usarse. Las credenciales que hacen refresh o usan un token_grant se usan como el valor estático que escribas.

Use OpenShell credential placeholders (desactivado por omisión) hace que el agente vea openshell:resolve:env:NAME en su entorno en lugar de los tokens de aspecto real de Bromure, para las credenciales que esta máquina pasa como variables de entorno — como lo haría bajo OpenShell. El proxy pone el valor real en las cabeceras de las peticiones, y en los cuerpos de las peticiones o los mensajes WebSocket solo donde un endpoint define request_body_credential_rewrite o websocket_credential_rewrite. Cada credencial sigue funcionando solo en sus propios hosts. Las credenciales enviadas en otro formato (inicios de sesión de git y de registros, inicios de sesión de suscripciones) conservan los sustitutos de Bromure. Algunas herramientas comprueban el formato de un token y pueden rechazar un marcador. Surte efecto en el siguiente arranque de la VM.

Cuándo se aplican los cambios

La identidad de git, los tokens de git, Linear, Twilio, DigitalOcean, los registros de contenedores, las bases de datos y las demás claves de API se aplican a una máquina en ejecución al pulsar Guardar. Las claves SSH y las credenciales de AWS necesitan un reinicio; la app lo ofrece al guardar. Los contextos de Kubernetes funcionan al guardar, y la app también ofrece un reinicio. Los marcadores de credenciales de OpenShell surten efecto en el siguiente arranque de la VM.

Todo lo de este panel se guarda en el secrets.enc cifrado de la máquina, nunca en profile.json.

Referencia de ajustes

EditorQué contiene
Identidad de Gituser.name / user.email para ~/.gitconfig; no es secreto.
SSH keyLa clave de la máquina y las claves importadas; las sirve el ssh-agent del Mac.
Git tokenUsuario y token por host para GitHub, GitLab, Bitbucket.
Linear API keyLINEAR_API_KEY, sustituida en linear.app.
Twilio API keyTWILIO_ACCOUNT_SID tal cual, TWILIO_AUTH_TOKEN como sustituto, sustituido en twilio.com.
KubernetesContextos (token, certificado de cliente, plugin exec).
DigitalOcean tokenDIGITALOCEAN_ACCESS_TOKEN y configuración de doctl.
AWS credentialsClaves estáticas o SSO; el Mac vuelve a firmar las solicitudes. También firma Bedrock.
Container registryInicios de sesión por registro; sustituto en ~/.docker/config.json.
DatabaseSecreto por endpoint, exportado con las variables que indiques.
Other API keySecreto o referencia de 1Password, variable, hosts opcionales.
Importar archivo env…Importación masiva desde .env o ~/.bashrc.

Capítulos relacionados