Protegeix l’accés a les teves dades

Cadrumo xifra cada perfil amb la seva pròpia clau de dades. La frase de contrasenya del perfil obre aquesta clau per a l’inici de sessió normal i el treball diari. Un codi de recuperació opcional pot obrir aquesta mateixa clau amb una única finalitat: establir una frase de contrasenya nova quan s’ha oblidat l’anterior. No participa mai en l’inici de sessió.

Feu servir aquesta guia per desar la frase de contrasenya de manera segura, decidir si configureu un codi de recuperació, canviar o restablir la frase de contrasenya, executar ordres sense sol·licitud interactiva, tancar la sessió amb seguretat i restablir l’estat local només com a darrer recurs.

Abans de començar

Necessites:

Fes servir --language en, es, ca o hu quan necessitis un idioma de sortida concret.

Desa la contrasenya de forma segura

La contrasenya obre la clau de les dades xifrades. Tracta-la en conseqüència:

  • Escriu la contrasenya i mantén-la fora de línia, separada de l’ordinador.

  • Guarda una segona còpia en un lloc on encara puguis accedir després d’una fallada del disc.

  • No l’emmagatzemis mai en un perfil d’intèrpret d’ordres compartit, un script compromès o un registre.

Si perdeu la frase de contrasenya i no heu configurat cap codi de recuperació, les dades xifrades seran illegibles de manera permanent. L’única sortida és un restabliment, que les elimina.

No reiniciïs quan només alguns registres no s’obren. Primer, posa’ls en quarantena. La quarantena mou cada registre il·legible, encara encriptat, a un arxiu dins del mateix emmagatzematge i deixa intactes tots els registres legibles, de manera que no esborra res i es pot previsualitzar abans que s’executi. Consulta diagnostica i repara la configuració local.

Configureu un codi de recuperació (opcional)

Un codi de recuperació és una segona manera d’obrir la clau de dades del perfil. Existeix perquè una frase de contrasenya oblidada es pugui substituir en lloc de costar els registres. Està desactivat de manera predeterminada: un perfil es crea amb la seva frase de contrasenya com a única porta i vosaltres decidiu si hi afegiu el codi.

Quan creeu un perfil en un terminal, Cadrumo pregunta un cop si voleu configurar un codi de recuperació i la resposta predeterminada és no. El registre a pantalla completa fa la mateixa pregunta a la seva pròpia pantalla, amb l’opció Skip for now. En tots dos casos ho podeu decidir més tard.

Per activar-lo al perfil actiu:

aeat config profile recovery enable

Cadrumo demana la frase de contrasenya actual, mostra el codi una sola vegada al terminal i us demana que el torneu a escriure abans d’instal·lar res. El codi té l’aspecte XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX; en escriure’l no importen les majúscules, els guions ni els espais. Anoteu-lo i guardeu-lo lluny de la vostra frase de contrasenya i lluny de l’ordinador que conté les dades. Cadrumo no en conserva cap còpia i no el pot tornar a mostrar.

Qualsevol que tingui el codi pot establir una frase de contrasenya nova per al perfil, així que tracteu-lo com tractaríeu la frase de contrasenya mateixa. Per comprovar-lo o eliminar-lo:

aeat config profile recovery status
aeat config profile recovery disable

Desactivar-lo demana la frase de contrasenya actual. Tornar-lo a activar emet un codi nou; l’anterior deixa de funcionar.

El codi continua essent vàlid a través dels canvis ordinaris de frase de contrasenya. No viatja dins d’un arxiu de còpia de seguretat: un perfil restaurat sempre comença sense recuperació, i l’ordre de restauració ho indica. Torneu-lo a activar després d’una restauració si el voleu.

Restabliu una frase de contrasenya oblidada

Si teniu el codi de recuperació i heu oblidat la frase de contrasenya:

aeat config passphrase reset PROFILE

Introduïu el codi de recuperació i després la frase de contrasenya nova dues vegades. No es mostra res per pantalla. La clau existent es torna a embolcallar amb la frase de contrasenya nova, de manera que no es torna a xifrar cap registre i el codi de recuperació continua funcionant després. Un codi incorrecte, un perfil sense recuperació, una frase de contrasenya nova massa curta o dues còpies que no coincideixen es neguen i deixen el perfil intacte.

Per restablir-la sense sol·licitud interactiva, envieu {"recovery_code": "...", "new_passphrase": "...", "new_passphrase_confirmation": "..."} mitjançant --secrets-stdin o --secrets-fd FD.

Activeu la recuperació sense terminal

Un codi de recuperació només es pot mostrar en un terminal, de manera que un procés sense terminal l’ha de rebre de manera explícita. Proporcioneu --secrets-stdin o --secrets-fd FD amb {"passphrase": "..."}, a més de --recovery-handoff-fd WRITE_FD i --recovery-verification-fd READ_FD. Llegiu exactament un objecte amb la forma {"recovery_code":"..."} del primer conducte, deseu el codi de manera segura i envieu el mateix objecte estricte pel segon conducte. Feu servir conductes anònims diferents i números de descriptor diferents; cap dels descriptors no pot ser 0, 1 o 2 ni coincidir amb --secrets-fd. El procés tanca cada descriptor després de la seva única operació limitada. Una meitat absent, una prova mal formada, una discrepància, una càrrega sobredimensionada, una col·lisió de descriptors o una fallada d’E/S no inscriu res.

Canvia la teva contrasenya

Canvia la contrasenya cada vegada que sospitis que s’ha vist, o en qualsevol horari que estableixi la teva pròpia política:

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

Introdueix la contrasenya actual i, a continuació, la nova dues vegades. No es fa res.

El canvi torna a embolicar la clau existent en lloc de reemplaçar-la, de manera que:

  • No es torna a xifrar cap registre i es poden llegir tots els registres existents.

  • Un codi de recuperació que heu configurat abans continua essent correcte.

L’ordre t’informa de tots dos fets. Si la contrasenya actual és incorrecta, la nova és massa curta o les dues còpies no coincideixen, es nega i deixa la contrasenya existent en funcionament.

Per canviar la contrasenya sense una indicació interactiva, passi els tres valors com un objecte JSON a través d’un canal de secret de fulla:

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

Utilitzeu --secrets-stdin quan l’entrada estàndard estigui disponible. Utilitzeu --secrets-fd FD amb el mateix objecte quan una altra entrada ocupi l’entrada estàndard. Envieu {"current_passphrase": "...", "new_passphrase": "...", "new_passphrase_confirmation": "..."}. No passeu mai una contrasenya com a argument de línia d’ordres: els arguments són visibles a la llista de processos i a l’historial de l’intèrpret.

Executa sense demanar la contrasenya

L’automatització no pot respondre una sol·licitud interactiva de frase de contrasenya. Proporcioneu un objecte JSON UTF-8 limitat mitjançant un canal d’entrada explícit. No poseu cap frase de contrasenya de perfil, codi de recuperació ni frase de contrasenya de certificat en una variable d’entorn o un argument de línia d’ordres. La CLI no fa servir CADRUMO_SECRET_PASSPHRASE com a via alternativa d’entrada de secrets.

Hi ha dos parells d’opcions separats:

  • Feu servir --secrets-stdin o --secrets-fd FD a l’ordre fulla quan l’ordre mateixa posseeix el secret. A continuació s’enumeren les ordres fulla i els seus objectes exactes.

  • Utilitzeu --profile-secrets-stdin o --profile-secrets-fd FD a l’arrel, abans de config, quan una ordre vinculada a un perfil hagi d’autenticar el perfil seleccionat perquè no s’ha pogut reprendre la sessió persistent. L’objecte és {"profile_passphrase": "..."}.

Les opcions arrel no substitueixen les opcions fulla. Per exemple, desar un secret de certificat pot necessitar la contrasenya del perfil a l’arrel i la contrasenya del certificat en el mateix procés. Proporcioneu-les mitjançant dos canals que no entrin en conflicte.

Proporciona un secret propietat d’una ordre Leaf

Utilitzeu les mateixes dues banderes de fulla en cada ordre de secret escalar:

Ordre

Objecte JSON estricte

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 objecte ha de contenir exactament els camps mostrats. La creació d’un perfil per un canal per a màquines no pregunta mai per la recuperació; activeu-la després amb el parell d’entrega descrit a activeu la recuperació sense terminal. Es rebutja l’entrada duplicada, absent, addicional, sobredimensionada, mal formada o no UTF-8. No s’accepten l’antic camp de restauració password ni el camp de certificat secret.

Inspecciona les banderes actuals sense subministrar cap secret:

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.

Autentifica un perfil per a una ordre

Col·loca una opció root abans del camí de l’ordre. Nombra el perfil exacte a l’ordre de destinació quan accepti una destinació de perfil. Per exemple:

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

Aquesta font només es fa servir després de conèixer el perfil exacte, quan l’ordre requereix una sessió de perfil, no hi ha cap sessió activa coincident i ha fallat la represa de la sessió persistida. Es rebutja sense llegir-la quan l’ordre no necessita autenticació de perfil, quan el destí exacte ja té una sessió activa o represa, o quan l’ordre s’autentica a si mateixa. L’inici de sessió, la creació, la restauració, el tancament de sessió, el canvi de frase de contrasenya, el restabliment de la frase de contrasenya i l’activació o desactivació de la recuperació no accepten aquesta prova arrel.

En un amfitrió sense persistència de clau utilitzable, l’autenticació arrel correcta només continua el procés actual. L’ordre emet un Notice que la contrasenya s’ha de tornar a subministrar en el proper procés. Cada nou procés repeteix la derivació de la contrasenya Argon2; aquest cost deliberat no s’emmagatzema a la memòria cau en una credencial més feble o en un testimoni de portador transferible.

Mantenir dues fonts secretes diferents

Trieu les fonts abans de llegir-les:

  • No seleccioneu tant stdin com un descriptor per al mateix parell d’opcions.

  • No assigneu stdin als àmbits arrel i fulla.

  • No assigneu el mateix número de descriptor a tots dos àmbits.

  • Utilitzeu root fd més leaf stdin, root stdin més leaf fd o dos descriptors diferents quan una invocació necessiti tots dos objectes.

S’ha rebutjat com a no utilitzada una font seleccionada que no s’aplica a l’ordre resolta o al perfil exacte. Això protegeix els scripts d’enviar una credencial a l’objectiu equivocat després d’un error de línia d’ordres.

Passa un descriptor heretat de forma segura

Utilitzeu una canonada anònima quan l’entrada estàndard ja transporti un altre valor. El cridador és propietari de l’objecte subjacent i de la vida útil del descriptor. Cadrumo fa una lectura acotada i tanca el descriptor localment després de començar la lectura, també quan rebutja l’entrada. El descriptor 0 s’admet com a equivalent de stdin; es rebutgen els descriptors 1 i 2, els negatius, els tancats i els que no permeten lectura.

A POSIX, inicieu el procés incloent el descriptor de lectura del conducte a la llista permesa pass_fds del procés fill i passeu aquest número a --secrets-fd o --profile-secrets-fd. A Windows, no suposeu que un descriptor CRT numèric s’hereta directament. Incloeu HANDLE heretables de Windows a la llista permesa i feu servir l’embolcall d’arrencada compatible per convertir-los mitjançant msvcrt.open_osfhandle. La inscripció de la recuperació fa servir un HANDLE d’entrega escrivible i un HANDLE de verificació llegible:

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

Omet --profile-handle o --secrets-handle quan la invocació només necessiti un àmbit. L’embolcall insereix l’opció de descriptor canònic coincident; no l’afegiu també a la cua d’ordres. Preferiu el canal stdin per a una ordre portàtil llançada directament.

Cadrumo delimita l’entrada, neteja les memòries intermèdies de lectura mútues amb el millor esforç i allibera les referències secretes ràpidament. Python pot crear cadenes immutables mentre es descodifica JSON i es validen camps secrets, de manera que l’aplicació no reclama un esborrat de memòria garantit. No reutilitzis mai la canonada, no la redireccionis a un fitxer normal ni registris l’objecte JSON.

Les ordres interactives només es poden sol·licitar en un terminal verificat. Es rebutja una invocació redirigida o no interactiva sense el canal explícit requerit.

Tanca la sessió del perfil actiu

Executa aeat config logout quan acabis de treballar amb un perfil. El tancament de sessió tanca la sessió d’emmagatzematge activa, descarta el material clau en memòria, disposa els motors de cubells i manté el perfil seleccionat per al següent inici de sessió exacte:

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 s’elimina res del perfil. Torna a iniciar sessió amb aeat config login per utilitzar el perfil seleccionat o nomena un altre perfil exacte quan tornis.

Restableix l’estat local (últim recurs)

Exporta tots els perfils que vulguis conservar abans de continuar. Restablir elimina permanentment tots els perfils emmagatzemats localment, l’estat d’autenticació local relacionat i la selecció del perfil actiu. No elimina les exportacions emmagatzemades en altres llocs. No pots desfer el reinici. Eliminar tampoc no és una manera d’ocultar l’activitat: qualsevol còpia de les vostres dades que van sortir de la màquina (exportacions, arxius, còpies de seguretat) està fora del control de Cadrumo i no hi ha res a Cadrumo els pot retreure.

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. Fes servir start només quan tinguis la intenció d’eliminar tots els perfils locals. Confirma el restabliment explícitament. Comprova els requisits de retenció abans de suprimir res i es nega a començar mentre un altre restabliment sigui incomplet.

  2. Fes servir l’ordre de només lectura status per inspeccionar l’última operació sense canviar les dades locals. Proporciona un ID d’operació per inspeccionar una operació exacta. L’estat informa d’una operació incompleta, en pausa o completa. La seva sortida inclou l’ID de l’operació i qualsevol motiu de pausa.

  3. Fes servir resume després d’una interrupció o una pausa. Confirma el restabliment de nou. Continua la mateixa operació incompleta en lloc de crear-ne una altra. Proporciona un ID d’operació per reprendre una operació exacta. Un cop comença la supressió, reprendre el restabliment no restaura les dades suprimides.

Si els requisits legals de retenció posen en pausa el restabliment, atura’t si has de conservar els registres afectats. Anul·la la pausa només després de revisar i acceptar la conseqüència de retenció legal, i proporciona sempre un motiu no buit. Si proporciones un motiu sense l’anul·lació, l’ordre es nega a continuar.

Consulta Configura el teu perfil de contribuent per obtenir instruccions de còpia de seguretat de l’arxiu segellat.

Passos següents