CLI do 1Password
Siga as etapas oficiais de início rápido da CLI. Não adivinhe comandos de instalação.
Referências
references/get-started.md(instalação + integração com app + fluxo de login)references/cli-examples.md(exemplos reais deop)
Fluxo de trabalho
- Verifique o SO + shell.
- Confirme a presença da CLI:
op --version. - Detecte o modo de autenticação que o usuário configurou:
- Conta de serviço: a variável
OP_SERVICE_ACCOUNT_TOKENestá definida (típico para configurações headless, CI, gateways). - Integração com app desktop: o aplicativo desktop do 1Password está em execução com a integração da CLI ativada (típico em desktops macOS / Windows / Linux).
- Login autônomo: nenhum dos anteriores —
op signinsolicitará a senha da conta a cada sessão.
- Conta de serviço: a variável
- Execute
opde acordo com o modo de autenticação (veja abaixo). - Verifique o acesso:
op whoamideve ser bem-sucedido antes de qualquer leitura de segredo. - Se houver várias contas: use
--accountouOP_ACCOUNT.
Executando op por modo de autenticação
Conta de serviço (preferida para uso headless / gateway)
Execução direta. Sem tmux, sem etapa de login.
export OP_SERVICE_ACCOUNT_TOKEN="ops_..."
op vault list
op read op://app-prod/db/password
Integração com app desktop
Execução direta. Não envolva em tmux — a integração com o app desktop usa um canal IPC por usuário que é estabelecido para o ambiente de execução do gateway, mas nem sempre é alcançado de forma confiável a partir de subshells do tmux, que executam em um contexto de ambiente diferente. O transporte varia por plataforma (XPC via 1Password Browser Helper no macOS, um socket Unix no Linux, um pipe nomeado no Windows); a regra prática para um agente é a mesma em todas as três: execute op diretamente. No macOS, um indicador de sintoma útil é o contêiner do grupo de integração do 1Password em ~/Library/Group Containers/2BUA8C4S2C.com.1password/t/.
op vault list # pode acionar Touch ID / Windows Hello / autenticação do sistema na primeira chamada
op whoami
Se uma chamada retornar 1Password CLI couldn't connect to the 1Password desktop app, não mude para tmux. Confirme que o app desktop está em execução e desbloqueado, depois tente novamente a execução direta.
Login autônomo (sem app, senha interativa)
Este é o único modo em que o tmux ajuda. op signin imprime uma exportação no estilo eval definindo um token OP_SESSION_* para shells POSIX; comandos posteriores no mesmo shell são autenticados por essa variável de ambiente. Os shells por comando do gateway perdem esse estado entre chamadas, portanto um painel tmux persistente mantém o token de sessão ativo — mas apenas se a exportação for realmente aplicada com eval em um shell POSIX. Enviar op signin como um comando simples deixa a saída impressa no painel e op whoami falhará.
O fluxo tmux é acionável apenas em hosts macOS/Linux onde a skill tmux está disponível. O exemplo abre intencionalmente /bin/sh para que a saída de eval "$(op signin ...)" seja válida mesmo quando o shell normal do usuário for fish. No Windows, prefira a integração com app desktop ou autenticação por conta de serviço. Se o usuário tiver apenas login interativo autônomo no Windows, pare e peça para fornecer um mecanismo de sessão PowerShell persistente ou mudar para integração com desktop/autenticação por conta de serviço; não traduza os comandos tmux diretamente.
SOCKET_DIR="${OPENCLAW_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/openclaw-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
chmod 700 "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/openclaw-op.sock"
SESSION="op-auth-$(date +%Y%m%d-%H%M%S)"
tmux -S "$SOCKET" new -d -s "$SESSION" -n shell /bin/sh
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'eval "$(op signin --account my.1password.com)"' Enter
tmux -S "$SOCKET" capture-pane -t "$SESSION":0.0 -p -S - | tail -40
Não enfileire comandos de acompanhamento enquanto o login estiver solicitando entrada. Monitore o painel com capture-pane até que o login tenha sido concluído e o prompt do shell tenha retornado, ou até que esteja claramente aguardando entrada humana. Se o prompt exigir senha, MFA ou escolha de conta, pause e peça ao usuário para concluir o login em seu próprio terminal; forneça os valores do socket e da sessão para que ele possa anexar localmente. O agente não deve executar tmux attach a partir do exec porque attach consome o TTY atual e impede o controle scriptado por send-keys / capture-pane.
Após o prompt do shell retornar, verifique enviando as verificações para o mesmo painel:
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'op whoami' Enter
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'op vault list' Enter
tmux -S "$SOCKET" capture-pane -t "$SESSION":0.0 -p -S - | tail -80
Mantenha a sessão tmux em execução para que comandos op read / op run posteriores reutilizem o mesmo shell autenticado.
Use os mesmos valores de SOCKET e SESSION para cada comando de acompanhamento neste fluxo de login autônomo. A flag -S "$SOCKET" seleciona o servidor socket do tmux; mantenha-o em um diretório 0700 de propriedade do usuário, não o compartilhe entre usuários e escolha um novo nome de sessão para cada nova tentativa de login.
Login no navegador (1Password para Claude)
Se a sessão expuser o Claude nas ferramentas de credenciais do Chrome (request_credentials, autofill_credential, enter_verification_code), prefira-as em vez de op para fazer login em sites: o 1Password preenche a página diretamente e o segredo nunca entra no contexto. Regras:
- Solicite todas as credenciais que a tarefa precisa em uma única chamada
request_credentialsantes de navegar. - A aprovação é um prompt do 1Password no host do gateway. Se ficar pendente, informe ao usuário qual host desbloquear ("1Password está aguardando aprovação neste Mac") em vez de tentar novamente.
- Nunca peça ao usuário para enviar senhas ou códigos de uso único pelo chat; códigos vão apenas através de
enter_verification_code. - Não recorra a
op readpara uma senha de site apenas porque o fluxo do navegador precisa de aprovação; isso prejudica o design de não exposição. Useoppara segredos consumidos por comandos e configuração, não para logins web quando o fluxo do navegador existe.
Diretrizes
- Nunca cole segredos em logs, chat ou código.
- Prefira
op run/op injectem vez de escrever segredos no disco. - Se for necessário fazer login sem integração com app, use
op account addprimeiro. - Se um comando retornar "conta não está conectada":
- conta de serviço: reexporte
OP_SERVICE_ACCOUNT_TOKEN - app desktop: confirme que o app está em execução e a integração está ativada
- autônomo: execute
op signinnovamente dentro da mesma sessão tmux e autorize
- conta de serviço: reexporte