凭据移交
Status: Feature Plugin. Tested with DeepSeek Harness 0.1.0-rc.6.
이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.
업스트림에서 중국어 README를 제공하지 않아 저장소 원본 내용을 표시합니다.
dsh-credential-handoff
English | 中文
Status: Feature Plugin. Tested with DeepSeek Harness 0.1.0-rc.6.
dsh-credential-handoff lets an agent ask for a named credential without placing the secret in model context. The browser opens a conversation-local password dialog, writes the value through DSH's credential service, and returns only fixed status metadata to the tool call.
Problem
Agents can discover that a credential is missing, but asking the user to paste a key into normal chat exposes it to the transcript and model context. This plugin provides a write-only handoff path for that moment.
Behavior
The request_credential tool accepts a credential reference such as TAVILY_API_KEY, an optional label, and a reason. One pending request is allowed per session. The dialog expires after ten minutes. The tool result reports only the reference and whether it was configured or replaced.
On HTTPS, credential submission is allowed. On plaintext HTTP it is allowed only for exact loopback hosts (localhost, 127.0.0.1, and IPv6 loopback). Non-loopback plaintext HTTP is blocked in both the controls and the submit handler.
Non-goals
This package is not a vault, encryption provider, credential viewer, credential injector for subprocesses, or replacement for DSH's credential providers. It cannot protect a compromised browser, host process, or DSH credential backend.
Mechanism
- Host: registers
request_credentialand waits on a taggeduserQuestionsrequest. - Client: handles only that tagged question and calls
credentials.setdirectly. - Result: answers the pending question with fixed text and returns value-free metadata.
The secret is never included in the question answer, tool result, normal logs, or session event payload created by this plugin.
Compatibility
Tested with DeepSeek Harness 0.1.0-rc.6, Node.js ^22.19.0 || >=24, and pnpm >=10. DSH is a release candidate; later versions may change the question, credential, or client-slot contracts.
Install
dsh plugin --profile web add "github:xiaohj233/dsh-credential-handoff#v0.1.0"
Restart the Web profile after installation.
Configuration
No plugin settings are required. The model calls:
{"ref":"TAVILY_API_KEY","label":"Tavily API key","reason":"Required for Tavily search"}
Credential references use shell-style names: letters or underscore first, followed by letters, digits, or underscore.
Uninstall
dsh plugin --profile web remove dsh-credential-handoff
Removing the plugin removes the tool and dialog. It does not delete credentials already stored by the configured DSH credential provider.
Safety
Do not expose the DSH Web control plane to an untrusted network. Blocking plaintext non-loopback submission prevents this plugin from sending a secret on that transport; it does not add authentication to DSH. Review the configured credential provider's storage properties separately.
Tests
npm test
npm run check:syntax
npm run scan:secrets -- synthetic-test-value lib/index.js lib/client.js test/validate.test.js
npm pack --dry-run
The tests cover reference validation, secret-shape handling, transport classification, question/result mapping, and package syntax.
Limitations and upstream status
DSH already provides resolve, describe, set, and unset credential services. This plugin adds only a conversation-local handoff UI and model tool. It does not read credential values back into the browser or model.
The rc.6 generic question UI always offers an Other text answer. If the client takeover bundle fails to load, the fallback question warns the user not to paste a secret and to cancel, but the host cannot remove that generic field. Direct clients can also call DSH's own credential API outside this plugin; transport and authentication for the wider Web control plane remain upstream responsibilities.
License
MIT. See LICENSE.
보안 및 설치 증거
이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.
공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.
저장소가 MIT 라이선스를 선언했습니다.
최근 180일 내 코드 업데이트가 있습니다.
재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.
검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.