惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
博客园 - Franky
V
V2EX
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
博客园 - 叶小钗
F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
D
Docker
博客园 - 【当耐特】
阮一峰的网络日志
阮一峰的网络日志

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
fix(skills/1password): stop forcing tmux for desktop app ...
koshaji · 2026-06-19 · via Recent Commits to openclaw:main

@@ -35,36 +35,80 @@ Follow the official CLI get-started steps. Don't guess install commands.

35353636

1. Check OS + shell.

3737

2. Verify CLI present: `op --version`.

38-

3. Confirm desktop app integration is enabled (per get-started) and the app is unlocked.

39-

4. REQUIRED: create a fresh tmux session for all `op` commands (no direct `op` calls outside tmux).

40-

5. Sign in / authorize inside tmux: `op signin` (expect app prompt).

41-

6. Verify access inside tmux: `op whoami` (must succeed before any secret read).

42-

7. If multiple accounts: use `--account` or `OP_ACCOUNT`.

38+

3. Detect the auth mode the user has set up:

39+

- **Service account:** `OP_SERVICE_ACCOUNT_TOKEN` is set (typical for headless setups, CI, gateways).

40+

- **Desktop app integration:** the 1Password desktop app is running with CLI integration enabled (typical on macOS / Windows / Linux desktops).

41+

- **Standalone signin:** neither of the above — `op signin` will prompt for an account password every session.

42+

4. Run `op` according to the auth mode (see below).

43+

5. Verify access: `op whoami` should succeed before any secret read.

44+

6. If multiple accounts: use `--account` or `OP_ACCOUNT`.

434544-

## REQUIRED tmux session (tmux)

46+

## Running `op` per auth mode

454746-

The shell tool uses a fresh TTY per command. To avoid re-prompts and failures, always run `op` inside a dedicated tmux session with a fresh socket/session name.

48+

### Service account (preferred for headless / gateway use)

474948-

Example (see `tmux` skill for socket conventions, do not reuse old session names):

50+

Direct exec. No tmux, no signin step.

51+52+

```bash

53+

export OP_SERVICE_ACCOUNT_TOKEN="ops_..."

54+

op vault list

55+

op read op://app-prod/db/password

56+

```

57+58+

### Desktop app integration

59+60+

Direct exec. **Do not wrap in tmux** — the desktop app integration uses a per-user IPC channel that is established for the gateway's exec environment but is not always reliably reachable from tmux subshells, which run with a different environment context. The transport differs per platform (XPC via the 1Password Browser Helper on macOS, a Unix domain socket on Linux, a named pipe on Windows); the practical rule for an agent is the same on all three: run `op` directly. On macOS, a useful symptom indicator is the 1Password integration group container at `~/Library/Group Containers/2BUA8C4S2C.com.1password/t/`.

61+62+

```bash

63+

op vault list # may trigger Touch ID / Windows Hello / system auth on first call

64+

op whoami

65+

```

66+67+

If a call returns `1Password CLI couldn't connect to the 1Password desktop app`, do not switch to tmux. Confirm the desktop app is running and unlocked, then retry direct exec.

68+69+

### Standalone signin (no app, interactive password)

70+71+

This is the only mode where tmux helps. `op signin` prints an `eval`-style export setting an `OP_SESSION_*` token for POSIX shells; later commands in the same shell are authenticated by that env var. The gateway's per-command shells lose that state between calls, so a persistent tmux pane keeps the session token alive — but only if the export is actually applied with `eval` in a POSIX shell. Sending `op signin` as a plain command leaves stdout printed to the pane and `op whoami` will fail.

72+73+

The tmux flow is only actionable on macOS/Linux hosts where the `tmux` skill is available. The example intentionally opens `/bin/sh` so the POSIX `eval "$(op signin ...)"` output is valid even when the user's normal shell is fish. On Windows, prefer desktop app integration or service account auth. If the user only has standalone interactive signin on Windows, stop and ask them to provide a persistent PowerShell session mechanism or switch to desktop integration/service account auth; do not translate the tmux commands directly.

49745075

```bash

5176

SOCKET_DIR="${OPENCLAW_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/openclaw-tmux-sockets}"

5277

mkdir -p "$SOCKET_DIR"

78+

chmod 700 "$SOCKET_DIR"

5379

SOCKET="$SOCKET_DIR/openclaw-op.sock"

5480

SESSION="op-auth-$(date +%Y%m%d-%H%M%S)"

558156-

tmux -S "$SOCKET" new -d -s "$SESSION" -n shell

57-

tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op signin --account my.1password.com" Enter

58-

tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op whoami" Enter

59-

tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op vault list" Enter

60-

tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200

61-

tmux -S "$SOCKET" kill-session -t "$SESSION"

82+

tmux -S "$SOCKET" new -d -s "$SESSION" -n shell /bin/sh

83+

tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'eval "$(op signin --account my.1password.com)"' Enter

84+

tmux -S "$SOCKET" capture-pane -t "$SESSION":0.0 -p -S - | tail -40

6285

```

638687+

Do not queue follow-up commands while signin is prompting. Poll the pane with `capture-pane`

88+

until signin has either completed and the shell prompt has returned, or it is clearly waiting for

89+

human input. If the prompt requires a password, MFA, or account choice, pause and ask the user to

90+

complete signin in their own terminal; give them the socket and session values so they can attach

91+

locally. The agent should not run `tmux attach` from exec because attach consumes the current TTY and

92+

prevents scripted `send-keys` / `capture-pane` control.

93+94+

After the shell prompt returns, verify by sending the checks into the same pane:

95+96+

```bash

97+

tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'op whoami' Enter

98+

tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'op vault list' Enter

99+

tmux -S "$SOCKET" capture-pane -t "$SESSION":0.0 -p -S - | tail -80

100+

```

101+102+

Keep the tmux session running so later `op read` / `op run` commands reuse the same authenticated shell.

103+104+

Use the same `SOCKET` and `SESSION` values for every follow-up command in this standalone signin flow. The `-S "$SOCKET"` flag selects the tmux server socket; keep it in a user-owned `0700` directory, do not share it between users, and choose a new session name for each new signin attempt.

105+64106

## Guardrails

6510766108

- Never paste secrets into logs, chat, or code.

67109

- Prefer `op run` / `op inject` over writing secrets to disk.

68-

- If sign-in without app integration is needed, use `op account add`.

69-

- If a command returns "account is not signed in", re-run `op signin` inside tmux and authorize in the app.

70-

- Do not run `op` outside tmux; stop and ask if tmux is unavailable.

110+

- If sign-in without app integration is needed, use `op account add` first.

111+

- If a command returns "account is not signed in":

112+

- service account: re-export `OP_SERVICE_ACCOUNT_TOKEN`

113+

- desktop app: confirm the app is running and integration is enabled

114+

- standalone: re-run `op signin` inside the same tmux session and authorize