Repository navigation
feat(agents): allow authorized private credential handoffs - #139196
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: passed. Reviewed September 7, 2026, 1:41 AM ET / 05:41 UTC. ClawSweeper reviewWhat this changesUpdates shared agent guidance, documentation, tests, and snapshots to allow private short-lived sign-in handoffs while keeping reusable secrets in protected entry. Merge readiness✅ Ready for maintainer review This PR remains useful: current main and the latest release retain the blanket prohibition. The revised live observations address the earlier proof concern, and no blocking defect was found in the pinned patch. Priority: P2 Review scores
Verification
How this fits togetherOpenClaw assembles shared credential guidance into regular, Codex, Copilot, and setup-agent prompts. That guidance shapes how agents use existing messaging tools and service login flows. flowchart TD
A[User requests sign-in] --> B[Shared credential guidance]
B --> C{Credential kind}
C -->|Reusable secret| D[Protected entry]
C -->|Short-lived code| E[Requester's private conversation]
E --> F[Matching pending login flow]
F --> G[Verified completion or rejection]
Before mergeNone. Agent review detailsSecurityNone. PR surfaceSource +1, Tests -121, Docs +14. Total -106 across 14 files. View PR surface stats
Review metricsNone. Technical reviewBest possible solution: Keep one shared credential policy that permits requester-bound short-lived handoffs, preserves service checks, and reserves protected entry for reusable secrets. Do we have a high-confidence way to reproduce the issue? No high-confidence current-main runtime reproduction was established: synthetic checks reportedly reproduced refusals, but the recorded real baseline completed the same private sign-in scenario. Is this the best way to solve the issue? Yes, the shared prompt is the narrow owner for correcting blanket refusal guidance; the patch preserves existing protected-entry and service-enforcement boundaries. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against f02c72916aeb. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (3 earlier review cycles) |
|
@clawsweeper automerge |
|
🦞✅ Source: What merged:
Automerge notes:
The automerge loop is complete. Automerge progress:
|
|
landpr-approve-unrelated-red |
|
Verified the ClawSweeper landing of d1e508a5aa88 as 44dbc50d172e, including the resulting tree. Proof: final CI passed. Real-model Telegram Test Server checks passed private code delivery, confirmed completion, group-to-private handoff, mismatched/cancelled callback rejection, and user-message retention against a controlled service. The documented baseline and model-narration limitations remain unchanged.
|
…claw#139196) Summary: - Updates shared agent guidance, documentation, tests, and snapshots to allow private short-lived sign-in handoffs while keeping reusable secrets in protected entry. Automerge notes: - PR branch already contained follow-up commit before automerge: chore: refresh authorized credential flow prompt snapshots - PR branch already contained follow-up commit before automerge: fix: select private recipient before credential handoffs - PR branch already contained follow-up commit before automerge: test: align credential prompt delivery assertions Validation: - ClawSweeper review passed for head d1e508a. - Required merge gates passed before the squash merge. Prepared head SHA: d1e508a Review: openclaw#139196 (comment) Co-authored-by: Ayaan Zaidi <hi@obviy.us> Approved-by: obviyus
…guidance Keep buildCredentialSafetyPrompt under its shipped SDK name for the compatibility window. Accept and ignore the deprecated string argument through 2026-11-30 while callers move to the controlToolsAvailable options object, with the window recorded in the compatibility registry and docs. Preserve the private login-code handoff from #139196. Add the terminal setup route only when control tools are unavailable, and carry that decision through core, Codex, and Copilot prompts. Keep the terminal line in one shared owner and regenerate the prompt fixtures. Restore the unchanged public surface counts of 4,447 exports and 2,629 callable exports without editing budgets or their tests.
…guidance Keep buildCredentialSafetyPrompt under its shipped SDK name for the compatibility window. Accept and ignore the deprecated string argument through 2026-11-30 while callers move to the controlToolsAvailable options object, with the window recorded in the compatibility registry and docs. Preserve the private login-code handoff from #139196. Add the terminal setup route only when control tools are unavailable, and carry that decision through core, Codex, and Copilot prompts. Keep the terminal line in one shared owner and regenerate the prompt fixtures. Restore the unchanged public surface counts of 4,447 exports and 2,629 callable exports without editing budgets or their tests.
…thorized logins (#143238) * fix(agents): drop the blanket credential prompt contract Blanket transcript credential guidance obstructed owner-authorized browser fills and workspace credential use. Embedded/local sessions also lacked the OpenClaw and Gateway tools needed to reach the suggested masked handoff. Remove the shared prompt builder from core, Codex, Copilot, the system agent, and the SDK. Keep egress guidance with the secrets tool description, add scoped masked-setup routing to setup tools, and direct sessions without control tools to masked terminal setup. Update browser login and SDK migration docs and regenerate prompt fixtures. Replace obsolete contract-text assertions with a capability-routing test that fails on the original missing terminal handoff. Preserve protected secret entry, transcript redaction, and browser tool behavior. Thanks @ejc3 for the reachability analysis in #128077 and @Stephane-fci for the workspace-credential report in #142010. Refs #120728 #120656 #128076 #128077 #142010 * fix(agents): keep the shipped credential prompt export with narrowed guidance Keep buildCredentialSafetyPrompt under its shipped SDK name for the compatibility window. Accept and ignore the deprecated string argument through 2026-11-30 while callers move to the controlToolsAvailable options object, with the window recorded in the compatibility registry and docs. Preserve the private login-code handoff from #139196. Add the terminal setup route only when control tools are unavailable, and carry that decision through core, Codex, and Copilot prompts. Keep the terminal line in one shared owner and regenerate the prompt fixtures. Restore the unchanged public surface counts of 4,447 exports and 2,629 callable exports without editing budgets or their tests. * test(agents): restore transport API after model endpoint tests The Arcee endpoint fixture loads a second transport graph through Jiti and replaces the shared worker's Responses test API. Restore its original property descriptor after the file so later schema contract tests use the Vite graph's configured host. Reproduced the three strict-flag failures in the CI shard and in an ordered polluter/victim pair. The repaired shard passes 8,495 tests; both file orders pass all nine tests and the standalone schema contract passes all four. Related: #143238
…thorized logins (openclaw#143238) * fix(agents): drop the blanket credential prompt contract Blanket transcript credential guidance obstructed owner-authorized browser fills and workspace credential use. Embedded/local sessions also lacked the OpenClaw and Gateway tools needed to reach the suggested masked handoff. Remove the shared prompt builder from core, Codex, Copilot, the system agent, and the SDK. Keep egress guidance with the secrets tool description, add scoped masked-setup routing to setup tools, and direct sessions without control tools to masked terminal setup. Update browser login and SDK migration docs and regenerate prompt fixtures. Replace obsolete contract-text assertions with a capability-routing test that fails on the original missing terminal handoff. Preserve protected secret entry, transcript redaction, and browser tool behavior. Thanks @ejc3 for the reachability analysis in openclaw#128077 and @Stephane-fci for the workspace-credential report in openclaw#142010. Refs openclaw#120728 openclaw#120656 openclaw#128076 openclaw#128077 openclaw#142010 * fix(agents): keep the shipped credential prompt export with narrowed guidance Keep buildCredentialSafetyPrompt under its shipped SDK name for the compatibility window. Accept and ignore the deprecated string argument through 2026-11-30 while callers move to the controlToolsAvailable options object, with the window recorded in the compatibility registry and docs. Preserve the private login-code handoff from openclaw#139196. Add the terminal setup route only when control tools are unavailable, and carry that decision through core, Codex, and Copilot prompts. Keep the terminal line in one shared owner and regenerate the prompt fixtures. Restore the unchanged public surface counts of 4,447 exports and 2,629 callable exports without editing budgets or their tests. * test(agents): restore transport API after model endpoint tests The Arcee endpoint fixture loads a second transport graph through Jiti and replaces the shared worker's Responses test API. Restore its original property descriptor after the file so later schema contract tests use the Vite graph's configured host. Reproduced the three strict-flag failures in the CI shard and in an ordered polluter/victim pair. The repaired shard passes 8,495 tests; both file orders pass all nine tests and the standalone schema contract passes all four. Related: openclaw#143238
…claw#139196) Summary: - Updates shared agent guidance, documentation, tests, and snapshots to allow private short-lived sign-in handoffs while keeping reusable secrets in protected entry. Automerge notes: - PR branch already contained follow-up commit before automerge: chore: refresh authorized credential flow prompt snapshots - PR branch already contained follow-up commit before automerge: fix: select private recipient before credential handoffs - PR branch already contained follow-up commit before automerge: test: align credential prompt delivery assertions Validation: - ClawSweeper review passed for head d1e508a. - Required merge gates passed before the squash merge. Prepared head SHA: d1e508a Review: openclaw#139196 (comment) Co-authored-by: Ayaan Zaidi <hi@obviy.us> Approved-by: obviyus (cherry picked from commit 44dbc50)
What Problem This Solves
Credential guidance prohibited every authentication code in transcripts, conflicting with authorized private sign-in handoffs. The live baseline already completed the tested sign-in; this is a requested policy change rather than a reproduced live refusal.
Why This Change Was Made
Shared guidance permits matching short-lived codes only in the requester's private conversation. Group acknowledgement follows successful private delivery. Matching pending flows validate callbacks and confirm completion before success is reported. Passwords, reusable tokens, keys, cookies, and recovery codes still require protected entry.
User Impact
A sign-in request authorizes its matching private handoff without another permission question. Groups receive code-free acknowledgement. Existing callback state, expiry, account checks, and message retention remain required. No enforcement, settings, or storage changes are added.
Evidence
Synthetic policy checks covered 16 scenarios; 590 focused tests and seven revised prompt snapshots passed. Revised Telegram checks with a controlled service verified private delivery, group-to-private handoff, completed-status checks, rejected callbacks, and retained user messages. An earlier candidate disclosed a code in a group; that failure is retained. Revised runs still misstated code lifetime and one rejection explanation. This is guidance, not deterministic disclosure filtering, and proves the controlled service rather than third-party sign-in.