Protege el acceso a tus datos

Cadrumo cifra cada perfil con su propia clave de datos. La frase de contraseña del perfil abre esa clave para el inicio de sesión normal y el trabajo diario. Un código de recuperación opcional puede abrir esa misma clave con un único fin: establecer una nueva frase de contraseña cuando se ha olvidado la anterior. Nunca participa en el inicio de sesión.

Utilice esta guía para almacenar la frase de contraseña de forma segura, decidir si configura un código de recuperación, cambiar o restablecer la frase de contraseña, ejecutar comandos sin solicitud interactiva, cerrar sesión de forma segura y restablecer el estado local solo como último recurso.

Antes de empezar

Necesita:

Usa --language en, es, ca o hu cuando necesites un idioma de salida concreto.

Almacena tu contraseña de forma segura

Su contraseña abre la clave de sus datos cifrados. Trátalo en consecuencia:

  • Escriba la frase de contraseña y manténgala fuera de línea, separada de su ordenador.

  • Guarde una segunda copia en algún lugar al que aún pueda acceder después de una falla en el disco.

  • Nunca lo almacene en un perfil de shell compartido, un script comprometido o un registro.

Si pierde la frase de contraseña y no ha configurado un código de recuperación, los datos cifrados serán ilegibles de forma permanente. La única salida es un restablecimiento, que los elimina.

No reinicie cuando solo algunos registros no se abran. Ponlos en cuarentena primero. La cuarentena mueve cada registro ilegible, aún encriptado, a un archivo dentro del mismo almacenamiento y deja intactos todos los registros legibles, por lo que no elimina nada y se puede previsualizar antes de que se ejecute. Consulte diagnosticar y reparar su configuración local.

Configure un código de recuperación (opcional)

Un código de recuperación es una segunda forma de abrir la clave de datos del perfil. Existe para que una frase de contraseña olvidada pueda sustituirse en lugar de costar los registros. Está desactivado de forma predeterminada: un perfil se crea con su frase de contraseña como única puerta y usted decide si añade el código.

Cuando crea un perfil en una terminal, Cadrumo pregunta una vez si desea configurar un código de recuperación y la respuesta predeterminada es no. El registro a pantalla completa hace la misma pregunta en su propia pantalla, con la opción Skip for now. En ambos casos puede decidirlo más tarde.

Para activarlo en el perfil activo:

aeat config profile recovery enable

Cadrumo pide la frase de contraseña actual, muestra el código una sola vez en la terminal y le pide que lo escriba de nuevo antes de instalar nada. El código tiene el aspecto XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX; al escribirlo no importan las mayúsculas, los guiones ni los espacios. Anótelo y guárdelo lejos de su frase de contraseña y lejos del ordenador que contiene los datos. Cadrumo no conserva ninguna copia y no puede volver a mostrarlo.

Cualquiera que tenga el código puede establecer una nueva frase de contraseña para el perfil, así que trátelo como trataría la propia frase de contraseña. Para comprobarlo o eliminarlo:

aeat config profile recovery status
aeat config profile recovery disable

Desactivarlo pide la frase de contraseña actual. Volver a activarlo emite un código nuevo; el anterior deja de funcionar.

El código sigue siendo válido a través de los cambios ordinarios de frase de contraseña. No viaja dentro de un archivo de copia de seguridad: un perfil restaurado siempre empieza sin recuperación, y el comando de restauración lo indica. Vuelva a activarlo después de una restauración si lo desea.

Restablezca una frase de contraseña olvidada

Si tiene el código de recuperación y ha olvidado la frase de contraseña:

aeat config passphrase reset PROFILE

Introduzca el código de recuperación y después la nueva frase de contraseña dos veces. No se muestra nada en pantalla. La clave existente se vuelve a envolver con la nueva frase de contraseña, por lo que no se vuelve a cifrar ningún registro y el código de recuperación sigue funcionando después. Un código incorrecto, un perfil sin recuperación, una frase de contraseña nueva demasiado corta o dos copias que no coinciden se rechazan y dejan el perfil intacto.

Para restablecerla sin solicitud interactiva, envíe {"recovery_code": "...", "new_passphrase": "...", "new_passphrase_confirmation": "..."} mediante --secrets-stdin o --secrets-fd FD.

Active la recuperación sin terminal

Un código de recuperación solo puede mostrarse en una terminal, por lo que un proceso sin terminal debe recibirlo de forma explícita. Proporcione --secrets-stdin o --secrets-fd FD con {"passphrase": "..."}, además de --recovery-handoff-fd WRITE_FD y --recovery-verification-fd READ_FD. Lea exactamente un objeto con forma {"recovery_code":"..."} de la primera tubería, guarde el código de forma segura y envíe el mismo objeto estricto por la segunda tubería. Use tuberías anónimas distintas y números de descriptor distintos; ninguno de los descriptores puede ser 0, 1 o 2 ni coincidir con --secrets-fd. El proceso cierra cada descriptor después de su única operación acotada. Una mitad ausente, una prueba mal formada, una discrepancia, una carga sobredimensionada, una colisión de descriptores o un fallo de E/S no inscribe nada.

Cambia tu frase de contraseña

Cambie la frase de contraseña cada vez que sospeche que se ha visto, o en cualquier horario que establezca su propia política:

1Change the passphrase that protects the active profile.
aeat config passphrase change
aeat config passphrase change

Introduzca la frase de contraseña actual y, a continuación, la nueva dos veces. No se hace eco de nada.

El cambio vuelve a envolver la clave existente en lugar de reemplazarla, por lo que:

  • Ningún registro se vuelve a cifrar y todos los registros existentes permanecen legibles.

  • Un código de recuperación que configuró antes sigue siendo correcto.

El comando le informa ambos hechos. Si la frase de contraseña actual es incorrecta, la nueva es demasiado corta o las dos copias no coinciden, se rechaza y deja la frase de contraseña existente en funcionamiento.

Para cambiar la frase de contraseña sin una solicitud interactiva, pase los tres valores como un objeto JSON a través de un canal secreto de hoja:

1Change the passphrase without an interactive prompt.
aeat config passphrase change --secrets-stdin
aeat config passphrase change --secrets-stdin

Utilice --secrets-stdin cuando la entrada estándar esté disponible. Utilice --secrets-fd FD con el mismo objeto cuando otra entrada ocupe la entrada estándar. Envíe {"current_passphrase": "...", "new_passphrase": "...", "new_passphrase_confirmation": "..."}. Nunca pase una frase de contraseña como argumento de línea de comandos: los argumentos son visibles en la lista de procesos y en el historial del intérprete.

Ejecuta sin solicitud de frase de contraseña

La automatización no puede responder a una solicitud interactiva de frase de contraseña. Proporcione un objeto JSON UTF-8 acotado mediante un canal de entrada explícito. No incluya una frase de contraseña de perfil, un código de recuperación ni una frase de contraseña de certificado en una variable de entorno o un argumento de línea de comandos. La CLI no utiliza CADRUMO_SECRET_PASSPHRASE como vía alternativa de entrada de secretos.

Hay dos pares de opciones separados:

  • Use --secrets-stdin o --secrets-fd FD en el comando hoja cuando el propio comando posee el secreto. A continuación se enumeran los comandos hoja y sus objetos exactos.

  • Utilice --profile-secrets-stdin o --profile-secrets-fd FD en la raíz, antes de config, cuando un comando ligado a un perfil deba autenticar el perfil seleccionado porque no se pudo reanudar su sesión persistente. El objeto es {"profile_passphrase": "..."}.

Las opciones raíz no sustituyen a las opciones hoja. Por ejemplo, guardar un secreto de certificado puede necesitar la frase de contraseña del perfil en la raíz y la frase de contraseña del certificado en el mismo proceso. Proporciónelas mediante dos canales que no entren en conflicto.

Suministrar un secreto propiedad de un comando Leaf

Utilice las mismas dos banderas de hoja en cada comando de secreto escalar:

Comando

Objeto JSON estricto

aeat config login

{"passphrase": "..."}

aeat config profile create

{"passphrase": "...", "passphrase_confirmation": "..."}

aeat config passphrase change

{"current_passphrase": "...", "new_passphrase": "...", "new_passphrase_confirmation": "..."}

aeat config passphrase reset PROFILE

{"recovery_code": "...", "new_passphrase": "...", "new_passphrase_confirmation": "..."}

aeat config profile archive import

{"passphrase": "..."}

aeat config profile recovery enable

{"passphrase": "..."}

aeat config profile recovery disable

{"passphrase": "..."}

aeat config auth certificate secret set

{"certificate_passphrase": "..."}

Cada objeto debe contener exactamente los campos mostrados. La creación de un perfil por un canal para máquinas nunca pregunta por la recuperación; actívela después con el par de entrega descrito en activar la recuperación sin terminal. Se rechaza la entrada duplicada, faltante, adicional, sobredimensionada, mal formada o no UTF-8. No se aceptan el antiguo campo de restauración password ni el campo de certificado secret.

Inspeccione las banderas actuales sin proporcionar un secreto:

1Inspect the root profile-authentication channels.
aeat --help
aeat --help
CADRUMO - local-first workflow with the Spanish Tax Agency (AEAT)

Cadrumo keeps taxpayer data local and exposes exactly two command roots.
The config root manages profiles, encrypted local data, recovery keys, profile sessions, AEAT authentication, and repair.
The app root manages profile overview, ledger, modelo, review, and authenticated AEAT reads.
A profile stores one taxpayer's local facts and settings. The active profile is the selected taxpayer context. A profile session provides resumable access to encrypted profile data.
The ledger contains imported money movements. A modelo is an official AEAT declaration form, distinct from its local work unit or export.
The review queue contains findings that need operator action.
Profile labels stay visible. Tax identities, credentials, storage identifiers, object keys, and sensitive web-address content stay protected.
For isolated state, set CADRUMO_LOCAL_STORAGE_ROOT and CADRUMO_SECRET_STORE_DIR. Pass profile secrets through --profile-secrets-stdin or --profile-secrets-fd, and command secrets through --secrets-stdin or --secrets-fd.

Start or resume
  aeat config profile create NAME  Create the first local taxpayer profile.
  aeat config profile list         List registered profiles and identify the active one.
  aeat config login NAME           Select a profile and start or renew its session.
  aeat config profile status       Check profile readiness and its authoritative next action.
  aeat config profile edit [NAME]  Complete or correct an incomplete profile.

Core workflow
  aeat config profile status                Show profile readiness.
  aeat app overview status                  Summarize profile and work state.
  aeat app ledger import                    Import bank or accounting transactions.
  aeat app ledger review                    Review imported rows that need attention.
  aeat app modelo work --help               Create or operate modelo work units.
  aeat app modelo verification-report list  List saved filing verification reports.
  aeat app review queue                     Show profile-wide items awaiting operator review.

Resume or recover
  aeat config login NAME      Start or renew an absent, closed, or expired profile session.
  aeat config repair          Before changing configuration or stored data, run this read-only health report.
  aeat config repair profile  Inspect a reported active-profile pointer problem.

Command families
  aeat config  Open profile, session, custody, storage, and repair commands.
  aeat app     Open profile-scoped tax-work commands.

Diagnostics
  aeat app overview status --verbose  Show general state with additional detail.
  aeat --format json config repair    Return the complete local health report as JSON.
  aeat config repair logs             Show the log path and latest lines.
  aeat --version --detail             Show the installed package identity.

Profile authentication options
  --profile-secrets-stdin  Read the exact target profile passphrase from one bounded JSON object on standard input after session resume fails.
  --profile-secrets-fd FD  Read the exact target profile passphrase from one bounded JSON object on an inherited readable descriptor after session resume fails.

Add --help for details. Remove sensitive log values, then report bugs at github.com/nevenincs/cadrumo/issues.
2Inspect the login secret channels.
aeat config login --help
aeat config login --help
Usage: aeat config login [OPTIONS] [name]

  Authenticate a profile and start a resumable session

Arguments:
  name  Profile UUID or exact label to log in; omit to use the selected
        profile

Options:
  --secrets-stdin                 Read the secrets as one bounded JSON object
                                  from standard input instead of prompting.
  --secrets-fd <int>              File descriptor to read machine secrets
                                  from.
  --output-language, --language <es|en|ca|hu>
                                  Output language for the response text (es,
                                  en, ca, hu).
  --install-completion            Install completion for the current shell.
  --show-completion               Show completion for the current shell, to
                                  copy it or customize the installation.
  --help                          Show this message and exit.
3Inspect the profile-creation secret channels.
aeat config profile create --help
aeat config profile create --help
Usage: aeat config profile create [OPTIONS] [profile_name]

  Create a profile protected by a passphrase. At a terminal it then offers an
  optional recovery code; skip it, or add it later with 'aeat config profile
  recovery enable'.

Arguments:
  profile_name  Profile name to write the answers into

Options:
  --quiet                         Run non-interactively using only the
                                  supplied flag values; required flags left
                                  unset cause an error. Sufficient on its own;
                                  combine with --accept-defaults to fill the
                                  rest from descriptor defaults.
  --accept-defaults               Fill every unsupplied flag from the
                                  descriptor defaults, without prompting. Use
                                  alongside --quiet, or on its own for an all-
                                  defaults create.
  --output-language <es|en|ca|hu>
                                  CLI output language for this profile
  --entity-type <str>             Natural person, legal entity, or attribution
                                  entity
  --legal-entity-form <str>       Recognised legal form when the entity type
                                  is a legal entity
  --tax-id <str>                  Tax identifier (NIF/CIF/DNI/NIE) for the
                                  active profile
  --name <str>                    Display name shown in local reviews
  --surnames <str>                Surnames or company name for export headers
  --legal-name <str>              Legal or company name for legal-entity
                                  export headers
  --fiscal-residency <str>        Fiscal residency category: resident_irpf
                                  (habitual resident in Spain) or
                                  non_resident_irnr (non-resident, IRNR
                                  taxation RDLeg 5/2004).
  --country-of-fiscal-residence <str>
                                  ISO 3166-1 alpha-2 code of the country of
                                  fiscal residence (e.g. GB, DE, FR). Required
                                  when fiscal-residency is non_resident_irnr.
  --representante-fiscal-nif <str>
                                  NIF/NIE of the fiscal representative in
                                  Spain. Required for non-EU/EEA non-residents
                                  (Art. 47 LGT + Art. 10 TRLIRNR RDLeg
                                  5/2004).
  --representante-fiscal-nombre <str>
                                  Full name of the fiscal representative in
                                  Spain.
  --tax-residence-jurisdiction-scope <str>
                                  Declared territorial regime: common
                                  territory or the not-yet-supported foral
                                  territory.
  --tax-residence-ccaa <str>      Tax-residence autonomous community, under
                                  the common regime. If the value is not
                                  recognised, the error lists the accepted
                                  communities.
  --address-postcode <str>        Tax address postcode
  --irpf-income-categories <str>  IRPF income category; pass --irpf-income-
                                  categories once per category
  --activity <str>                Business activity as plain text, or the IAE
                                  heading if you know it
  --activity-start-date <str>     Censo registration / start-of-activity date
                                  (YYYY-MM-DD). Optional; when set,
                                  obligations for periods before this date are
                                  not shown.
  --incn-prior-12-months <str>    Net turnover (importe neto de la cifra de
                                  negocios) over the prior 12 months, in
                                  euros. Above 6,000,000 EUR Modelo 202
                                  mandates the Art. 40.3 LIS modality; below
                                  it both modalities are available. Optional.
  --new-entity-first-two-profit-periods / --no-new-entity-first-two-profit-periods
                                  Mark this when a newly-created legal entity
                                  is in one of its first two profit-making tax
                                  periods (LIS Art. 29) to opt into the 15
                                  percent reduced rate. Optional; unset leaves
                                  the entity on its otherwise-applicable rate.
  --ley-49-2002-option-declared / --no-ley-49-2002-option-declared
                                  Record whether Modelo 036 casilla 651
                                  declares the Ley 49/2002 Title II option.
  --ley-49-2002-option-date <str>
                                  Record the Modelo 036 casilla 653 date for
                                  the Ley 49/2002 Title II option.
  --ley-49-2002-renunciation-declared / --no-ley-49-2002-renunciation-declared
                                  Record whether Modelo 036 casilla 652
                                  declares renunciation of the Ley 49/2002
                                  Title II regime.
  --ley-49-2002-renunciation-date <str>
                                  Record the Modelo 036 casilla 654 date for
                                  the Ley 49/2002 Title II renunciation.
  --iva-regime <str>              IVA regime
  --iva-m303-regime-composition <str>
                                  Modelo 303 regime composition: general,
                                  simplified, or mixed.
  --iva-roi-enrolled / --no-iva-roi-enrolled
                                  Enrolled in ROI
  --iva-oss-enrolled / --no-iva-oss-enrolled
                                  Enrolled in OSS
  --iva-group-member-enrolled / --no-iva-group-member-enrolled
                                  Enrolled as a member entity of an IVA group
  --iva-group-dominant-entity-enrolled / --no-iva-group-dominant-entity-enrolled
                                  Enrolled as the dominant entity of an IVA
                                  group
  --iva-sii-enrolled / --no-iva-sii-enrolled
                                  Whether the taxpayer is enrolled in the SII
  --iva-redeme-enrolled / --no-iva-redeme-enrolled
                                  Whether the taxpayer is registered in REDEME
  --iva-intracommunity-operations-exceed-50000-eur / --no-iva-intracommunity-operations-exceed-50000-eur
                                  Intra-community operations exceed 50,000 EUR
  --iva-cash-accounting-regime-enrolled / --no-iva-cash-accounting-regime-enrolled
                                  Declare enrolment in the special IVA cash-
                                  accounting regime.
  --iva-voluntary-sii-enrolled / --no-iva-voluntary-sii-enrolled
                                  Declare voluntary SII enrolment separately
                                  from mandatory inclusion triggers.
  --iva-hydrocarbon-deposit-advance-payment-deduction-entitled / --no-iva-hydrocarbon-deposit-advance-payment-deduction-entitled
                                  Declare entitlement to deduct advance
                                  payments under the hydrocarbon tax-deposit
                                  regime.
  --enrollment-large-company / --no-enrollment-large-company
                                  Large-company enrollment
  --enrollment-public-administration-budget-gt-6000000 / --no-enrollment-public-administration-budget-gt-6000000
                                  Public administration budget over 6,000,000
  --taxation-type <str>           Income-tax return type: 1 = individual, 2 =
                                  joint (family unit).
  --taxpayer-sex <str>            First taxpayer sex: H = male, M = female.
  --taxpayer-marital-status <1|2|3|4|5>
                                  First taxpayer marital status: 1 = single, 2
                                  = married, 3 = widowed, 4 = separated or
                                  divorced, 5 = registered civil partnership.
  --situacion-familiar <casado|pareja_hecho_registrada|pareja_hecho_no_registrada|soltero|separado_divorciado>
                                  Family situation under Art. 82 LIRPF:
                                  determines whether joint taxation is
                                  available and which family unit variant
                                  applies.
  --taxpayer-marriage-date <str>  Start date of the current marriage (YYYY-MM-
                                  DD). Only when marital status = 2 (married).
                                  Derives casillas 0245/0246/0247 (matrimonio
                                  sobrevenido, Art. 82 LIRPF).
  --taxpayer-birth-date <str>     First taxpayer birth date
  --taxpayer-disability-grade <str>
                                  First taxpayer disability grade: 1 =
                                  33%-64%, 2 = 65% or higher, 3 = judicial
                                  incapacity, 4 = third-party assistance or
                                  reduced mobility.
  --taxpayer-death-date <str>     First taxpayer death date
  --spouse-tax-id <str>           Spouse NIF/NIE
  --spouse-name <str>             Spouse given name
  --spouse-surnames <str>         Spouse surnames
  --spouse-birth-date <str>       Spouse birth date
  --spouse-sex <str>              Spouse sex: H = male, M = female.
  --spouse-disability-grade <str>
                                  Spouse disability grade (if applicable): 1 =
                                  33%-64%, 2 = 65% or higher, 3 = judicial
                                  incapacity, 4 = third-party assistance or
                                  reduced mobility.
  --spouse-non-resident-irpf / --no-spouse-non-resident-irpf
                                  Spouse is non-resident IRPF
  --spouse-eu-eea-resident / --no-spouse-eu-eea-resident
                                  Spouse is EU/EEA resident
  --spouse-eu-eea-country <str>   Spouse EU/EEA country
  --family-descendants-eu-eea-deduction / --no-family-descendants-eu-eea-deduction
                                  EU/EEA descendants in family-unit deduction
  --family-minor-children-in-unit / --no-family-minor-children-in-unit
                                  Minor children in family unit
  --has-employees / --no-has-employees
                                  Has employees and pays salaries with
                                  retención
  --pays-professionals-with-retencion / --no-pays-professionals-with-retencion
                                  Pays professionals with retención
  --art109-activity-income-withholding-ge-70pct / --no-art109-activity-income-withholding-ge-70pct
                                  Art. 109 coverage - at least 70% of covered
                                  professional, agricultural, livestock, or
                                  forestry activity income subject to
                                  withholding or payment on account
  --pays-rent-with-retencion / --no-pays-rent-with-retencion
                                  Pays local rent with retención
  --pays-capital-income-with-retencion / --no-pays-capital-income-with-retencion
                                  Pays capital income with retención
  --modelo-111-no-retenciones-periods <str>
                                  Comma-separated Modelo 111 no-obligation
                                  periods, format YYYY:PERIOD (for example
                                  2025:2T,2025:3T). Use only when no subject
                                  payments were made.
  --irpf-estimation-regime <str>  IRPF estimation regime for economic-activity
                                  income
  --objective-estimation-modulos-iae-epigraph <str>
                                  IAE epigraph for objective-estimation
                                  modules, such as 972.
  --objective-estimation-modulos-module-1-units <str>
                                  Annual module 1 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-2-units <str>
                                  Annual module 2 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-3-units <str>
                                  Annual module 3 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-4-units <str>
                                  Annual module 4 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-5-units <str>
                                  Annual module 5 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-6-units <str>
                                  Annual module 6 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-7-units <str>
                                  Annual module 7 units for objective-
                                  estimation modules.
  --irpf-special-regime <str>     IRPF special regime. "general" for most
                                  taxpayers. "impatriado" for workers who
                                  relocated to Spain and elected the Beckham
                                  Law regime (Art. 93 LIRPF), available for
                                  the first 6 years after relocation.
  --irpf-special-regime-start-date <str>
                                  Date the worker elected the inpatriate
                                  regime (YYYY-MM-DD). Only when irpf-special-
                                  regime is "impatriado". RIRPF Art. 116. The
                                  regime expires at the end of the 6th
                                  calendar year.
  --does-intracomunitario / --no-does-intracomunitario
                                  Conducts intracomunitario operations
  --third-party-transactions-above-347-threshold / --no-third-party-transactions-above-347-threshold
                                  Third-party transactions exceed Modelo 347
                                  threshold
  --bienes-extranjero-above-threshold / --no-bienes-extranjero-above-threshold
                                  Foreign-held assets above legal threshold
  --monedas-virtuales-extranjero-above-threshold / --no-monedas-virtuales-extranjero-above-threshold
                                  Virtual currencies held abroad above Modelo
                                  721 threshold
  --llm-vision / --no-llm-vision  Enable on-host LLM vision for reading
                                  invoices.
  --google-export / --no-google-export
                                  Enable Google Sheets export.
  --notes <str>                   Notes for your own records (optional)
  --secrets-stdin                 Read the secrets as one bounded JSON object
                                  from standard input instead of prompting.
  --secrets-fd <int>              File descriptor to read machine secrets
                                  from.
  --install-completion            Install completion for the current shell.
  --show-completion               Show completion for the current shell, to
                                  copy it or customize the installation.
  --help                          Show this message and exit.
4Inspect the passphrase-change secret channels.
aeat config passphrase change --help
aeat config passphrase change --help
Usage: aeat config passphrase change [OPTIONS]

  Change the passphrase without re-encrypting records or invalidating a
  recovery code.

Options:
  --secrets-stdin                 Read the secrets as one bounded JSON object
                                  from standard input instead of prompting.
  --secrets-fd <int>              File descriptor to read machine secrets
                                  from.
  --output-language, --language <es|en|ca|hu>
                                  Output language for the response text (es,
                                  en, ca, hu).
  --install-completion            Install completion for the current shell.
  --show-completion               Show completion for the current shell, to
                                  copy it or customize the installation.
  --help                          Show this message and exit.
5Inspect the profile-restore secret channels.
aeat config profile archive import --help
aeat config profile archive import --help
Usage: aeat config profile archive import [OPTIONS] {label}

  Republish a profile capsule from a directory or a sealed archive, proving
  its passphrase.

Arguments:
  label  Display name for the restored profile.  [required]

Options:
  --file <path>                   Path to the sealed archive or capsule
                                  directory to restore.  [required]
  --secrets-stdin                 Read the secrets as one bounded JSON object
                                  from standard input instead of prompting.
  --secrets-fd <int>              File descriptor to read machine secrets
                                  from.
  --output-language, --language <es|en|ca|hu>
                                  Output language for the response text (es,
                                  en, ca, hu).
  --install-completion            Install completion for the current shell.
  --show-completion               Show completion for the current shell, to
                                  copy it or customize the installation.
  --help                          Show this message and exit.
6Inspect the certificate-passphrase secret channels.
aeat config auth certificate secret set --help
aeat config auth certificate secret set --help
Usage: aeat config auth certificate secret set [OPTIONS]

  Set (or rotate) the passphrase for a registered certificate source

Options:
  --name <str>                    Registered certificate source the passphrase
                                  is bound to  [required]
  --secrets-stdin                 Read the secrets as one bounded JSON object
                                  from standard input instead of prompting.
  --secrets-fd <int>              File descriptor to read machine secrets
                                  from.
  --output-language, --language <es|en|ca|hu>
                                  Output language for the response text (es,
                                  en, ca, hu).
  --install-completion            Install completion for the current shell.
  --show-completion               Show completion for the current shell, to
                                  copy it or customize the installation.
  --help                          Show this message and exit.

Confirm every scalar-secret leaf exposes both explicit channels.

Autenticar un perfil para un comando

Coloque una opción raíz antes de la ruta del comando. Nombra el perfil exacto en el comando de destino cuando acepta un destino de perfil. Por ejemplo:

aeat --profile-secrets-stdin config profile view PROFILE

Esta fuente se utiliza únicamente después de conocer el perfil exacto, cuando el comando requiere una sesión de perfil, no existe una sesión activa coincidente y ha fallado la reanudación de la sesión persistida. Se rechaza sin leerla cuando el comando no necesita autenticación de perfil, cuando el destino exacto ya tiene una sesión activa o reanudada, o cuando el comando se autentica a sí mismo. El inicio de sesión, la creación, la restauración, el cierre de sesión, el cambio de frase de contraseña, el restablecimiento de la frase de contraseña y la activación o desactivación de la recuperación no aceptan esta prueba raíz.

En un host sin persistencia de llavero utilizable, la autenticación raíz exitosa continúa solo el proceso actual. El comando emite un Notice que la frase de contraseña debe ser suministrada de nuevo en el siguiente proceso. Cada nuevo proceso repite la derivación de la contraseña Argon2; este coste deliberado no se almacena en caché en una credencial más débil o un token de portador transferible.

Mantener dos fuentes secretas distintas

Elija las fuentes antes de leer cualquiera de las dos:

  • No seleccione stdin y un descriptor para el mismo par de opciones.

  • No asigne stdin a los ámbitos de raíz y hoja.

  • No asigne el mismo número de descriptor a ambos ámbitos.

  • Utilice root fd más leaf stdin, root stdin más leaf fd o dos descriptores diferentes cuando una invocación necesite ambos objetos.

Una fuente seleccionada que no se aplica al comando resuelto o al perfil exacto se rechaza como no utilizada. Esto protege a los scripts de enviar una credencial al destino incorrecto después de un error en la línea de comandos.

Pasar un descriptor heredado de forma segura

Utilice una tubería anónima cuando la entrada estándar ya transporte otro valor. El llamador es propietario del objeto subyacente y de la vida útil del descriptor. Cadrumo realiza una lectura acotada y cierra el descriptor localmente después de comenzar la lectura, también cuando rechaza la entrada. El descriptor 0 se admite como equivalente a stdin; se rechazan los descriptores 1 y 2, los negativos, los cerrados y los que no permiten lectura.

En POSIX, inicie el proceso incluyendo el descriptor de lectura de la tubería en la lista permitida pass_fds del proceso hijo y pase ese número a --secrets-fd o --profile-secrets-fd. En Windows, no suponga que un descriptor CRT numérico se hereda directamente. Incluya HANDLE heredables de Windows en la lista permitida y utilice el envoltorio de arranque compatible para convertirlos mediante msvcrt.open_osfhandle. La inscripción de la recuperación usa un HANDLE de entrega grabable y un HANDLE de verificación legible:

python -m cadrumo.entrypoints.cli._windows_profile_secret_bootstrap --profile-handle ROOT_HANDLE --secrets-handle LEAF_HANDLE -- config auth certificate secret set --name SOURCE
python -m cadrumo.entrypoints.cli._windows_profile_secret_bootstrap --recovery-handoff-handle WRITE_HANDLE --recovery-verification-handle READ_HANDLE -- config profile recovery enable --quiet --secrets-stdin

Omita --profile-handle o --secrets-handle cuando la invocación solo necesite un ámbito. El contenedor inserta la opción de descriptor canónico coincidente; no la añada también a la cola de comandos. Prefiera el canal stdin para un comando portátil lanzado directamente.

Cadrumo limita la entrada, limpia los búferes de lectura mutables con el mejor esfuerzo y libera las referencias secretas con prontitud. Python puede crear cadenas inmutables mientras decodifica JSON y valida campos secretos, por lo que la aplicación no reclama el borrado de memoria garantizado. Nunca reutilice la tubería, rediríjala a un archivo normal ni registre el objeto JSON.

Los comandos interactivos solo pueden aparecer en un terminal verificado. Se rechaza una invocación redirigida o no interactiva sin el canal explícito requerido.

Cierra la sesión del perfil activo

Ejecute aeat config logout cuando termine de trabajar con un perfil. Cerrar sesión cierra la sesión de almacenamiento activa, descarta el material clave en memoria, elimina los motores de bucket y mantiene el perfil seleccionado para el siguiente inicio de sesión exacto:

1Confirm a profile is currently active.
aeat config profile status
aeat config profile status
profile	docs-sequence-sandbox
profile_id	<profile-id>
identity.tax_id	sha256:1c9f9632
activities.description	documentation examples
iva.regime	GENERAL
tax_residence.ccaa	<unset>
Next step: `aeat app overview status`
2Close the active session while keeping the profile selected.
aeat config logout
aeat config logout
logged_out_profile	docs-sequence-sandbox
3Confirm that the registered profile remains selected after its session closes.
aeat --format json config profile list
aeat --format json config profile list
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.profile.list",
  "notices": [],
  "result": {
    "active_profile": "docs-sequence-sandbox",
    "profiles": [
      {
        "active": true,
        "bucket_id": "<bucket-id>",
        "name": "docs-sequence-sandbox"
      }
    ]
  },
  "schema_version": "2",
  "status": "success"
}

Confirm logout closes the active session without deleting the profile.

No se elimina nada en el perfil. Vuelva a iniciar sesión con aeat config login para usar el perfil seleccionado, o nombre otro perfil exacto cuando regrese.

Restablece el estado local (último recurso)

Exporta todos los perfiles que quieras conservar antes de continuar. Restablecer elimina permanentemente cada perfil almacenado localmente, el estado de autenticación local relacionado y la selección de perfil activo. No elimina las exportaciones almacenadas en otro lugar. No puedes deshacer el restablecimiento. Eliminar tampoco es una forma de ocultar la actividad: cualquier copia de sus datos que salieron de la máquina (exportaciones, archivos, copias de seguridad) están fuera del control de Cadrumo y nada en Cadrumo puede retraerlos.

1Start the reset.
aeat config reset start --yes
aeat config reset start --yes
2Check the latest reset operation.
aeat config reset status
aeat config reset status
3Check an exact reset operation.
aeat config reset status --operation-id \
  0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
aeat config reset status --operation-id `
  0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
4Resume the incomplete reset.
aeat config reset resume --yes
aeat config reset resume --yes
5Resume an exact paused operation after reviewing legal duties.
aeat config reset resume --operation-id \
  0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef --yes \
  --override-retention --reason Legal retention duties reviewed
aeat config reset resume --operation-id `
  0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef --yes `
  --override-retention --reason Legal retention duties reviewed
  1. Usa start solo cuando pretenda eliminar todos los perfiles locales. Confirma el restablecimiento explícitamente. Comprueba los requisitos de conservación antes de eliminar nada y se niega a iniciarse mientras otro restablecimiento esté incompleto.

  2. Usa el comando de solo lectura status para inspeccionar la última operación sin cambiar los datos locales. Proporciona un ID de operación para inspeccionar una operación exacta. status informa de una operación incompleta, en pausa o completa. Su salida incluye el ID de la operación y cualquier motivo de pausa.

  3. Usa resume tras una interrupción o pausa. Confirma de nuevo el restablecimiento. Continúa la misma operación incompleta en lugar de crear otra. Proporciona un ID de operación para reanudar una operación exacta. Una vez que empieza la eliminación, reanudar el restablecimiento no restaura los datos eliminados.

Si los requisitos legales de conservación pausan el restablecimiento, deténgase si debe conservar los registros afectados. Sobrepón la pausa solo después de revisar y aceptar la consecuencia legal de conservación, y proporciona siempre un motivo no vacío. Si proporciona un motivo sin la sobreposición, el comando se niega a continuar.

Consulta Configura tu perfil de contribuyente para obtener instrucciones de copia de seguridad de archivos sellados.

Pasos siguientes