Attest for VS Code
io.github.dev-prathap/attest
Decide by policy, gate behind a human, verify by read-back, record a hash-chained ledger.
client:VS Code
transport:stdio
runtime:pypi
Install Attest in VS Code
.vscode/mcp.json
{
"inputs": [
{
"type": "promptString",
"id": "attest-policy",
"description": "ATTEST_POLICY",
"password": true
},
{
"type": "promptString",
"id": "attest-ledger",
"description": "ATTEST_LEDGER",
"password": true
},
{
"type": "promptString",
"id": "attest-auto-approve",
"description": "ATTEST_AUTO_APPROVE",
"password": true
},
{
"type": "promptString",
"id": "attest-confirm-timeout",
"description": "ATTEST_CONFIRM_TIMEOUT",
"password": true
},
{
"type": "promptString",
"id": "gmail-token",
"description": "GMAIL_TOKEN",
"password": true
},
{
"type": "promptString",
"id": "google-token",
"description": "GOOGLE_TOKEN",
"password": true
},
{
"type": "promptString",
"id": "slack-bot-token",
"description": "SLACK_BOT_TOKEN",
"password": true
},
{
"type": "promptString",
"id": "hubspot-token",
"description": "HUBSPOT_TOKEN",
"password": true
},
{
"type": "promptString",
"id": "notion-token",
"description": "NOTION_TOKEN",
"password": true
},
{
"type": "promptString",
"id": "linear-api-key",
"description": "LINEAR_API_KEY",
"password": true
},
{
"type": "promptString",
"id": "graph-token",
"description": "GRAPH_TOKEN",
"password": true
}
],
"servers": {
"attest": {
"type": "stdio",
"command": "uvx",
"args": [
"attestlayer"
],
"env": {
"ATTEST_POLICY": "${input:attest-policy}",
"ATTEST_LEDGER": "${input:attest-ledger}",
"ATTEST_AUTO_APPROVE": "${input:attest-auto-approve}",
"ATTEST_CONFIRM_TIMEOUT": "${input:attest-confirm-timeout}",
"GMAIL_TOKEN": "${input:gmail-token}",
"GOOGLE_TOKEN": "${input:google-token}",
"SLACK_BOT_TOKEN": "${input:slack-bot-token}",
"HUBSPOT_TOKEN": "${input:hubspot-token}",
"NOTION_TOKEN": "${input:notion-token}",
"LINEAR_API_KEY": "${input:linear-api-key}",
"GRAPH_TOKEN": "${input:graph-token}"
}
}
}
}
VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs