Skip to content

Instantly share code, notes, and snippets.

View kuchida1981's full-sized avatar
😇

Kosuke Uchida kuchida1981

😇
View GitHub Profile
@kuchida1981
kuchida1981 / vault_login_decrypt_sequence.md
Last active August 13, 2026 02:35
Vaultwarden: マスターパスワードログイン〜保管庫アイテム復号までのシーケンス図

Vaultwarden: マスターパスワードログイン〜保管庫アイテム復号までのシーケンス

対象:

  • サーバー実装: vaultwarden (src/api/identity.rs, src/api/core/accounts.rs, src/api/core/ciphers.rs, src/db/models/cipher.rs)
  • クライアント実装: bitwarden-clients (libs/auth, libs/key-management, libs/common/src/vault, libs/common/src/platform/sync)

スコープは「①マスターパスワードでログイン/ロック解除」〜「②保管庫のLogin項目(username/password)を平文で入手」まで。2FA・SSOは省略し、最もシンプルなマスターパスワードログインのケースを扱う。

本ドキュメントの目的: vaultwarden/Bitwardenのゼロ知識アーキテクチャがどのように成り立っているか、そしてその安全性がどこに由来し、どこに実装・運用上の注意点があるかを理解すること。末尾の「脅威モデル」セクションも、攻撃手順の解説ではなく、設計を正しく理解した上で自己ホスト運用時にどこを堅くすべきかを判断するための整理。

Vaultwardenの「ゼロ知識暗号化 (Zero-Knowledge Encryption)」を実装コードで検証する

対象リポジトリ:

1〜6章はVaultwardenサーバー側のコードで「サーバーは暗号文とハッシュしか扱わない」ことを検証します。7章では、その赤色(平文)の部分が実際にクライアント側でどう作られているかをコードで補足します。

ゼロ知識暗号化とは何を主張しているか

Vaultwarden の「アカウント復旧」とE2EEの関係 — 実装コード付き解説

対象リポジトリ:

  • サーバー: dani-garcia/vaultwarden(参照コミット 2629bcbe, 2026-07時点のmain)
  • クライアント: bitwarden/clients(TypeScript/Angular monorepo。Vaultwardenは公式クライアントと通信プロトコル互換のため、鍵の生成・暗号化はこちらのコードが担う)

前半(1〜9章)はVaultwardenサーバーのコードで「サーバーは暗号文しか扱わない」ことを検証し、10章でその暗号文を実際に作っているクライアント側のコードを補足します。

疑問

@kuchida1981
kuchida1981 / agy-mcp-bridge-setup.md
Last active June 24, 2026 05:14
agy MCP Bridge セットアップ手順 (Claude Code × Antigravity CLI)

agy MCP Bridge セットアップ手順 (Claude Code × Antigravity CLI)

agy MCP Bridge セットアップ手順

Claude Code から Antigravity CLI (agy) を MCP 経由でサブエージェントとして呼び出すためのセットアップ手順。

背景

Antigravity CLI (agy) は MCP サーバー機能を持たないため、Claude Code から MCP ツールとして呼び出すにはブリッジ層が必要になる。このブリッジは agy を MCP エコシステムに統合するアダプタとして機能し、以下を担う:

function checkupdates --description 'alias checkupdates=checkupdates'
argparse -i --name=checkupdates 'h/help' 'j/json' -- $argv
or return 1
function _show_usage
command checkupdates --help | sed "s/^checkupdates.*\$/& + custom/" | grep -v "nosync"
echo '
Extra Options:
-j, --json json output'
functions -e _show_usage
@kuchida1981
kuchida1981 / bobthefish.fish
Created May 8, 2023 14:51
fish shell 設定
set -g theme_display_git yes
set -g theme_display_git_dirty yes
set -g theme_display_git_untracked yes
set -g theme_display_git_ahead_verbose no
set -g theme_display_git_dirty_verbose yes
set -g theme_display_git_stashed_verbose no
set -g theme_display_git_default_branch no
set -g theme_git_default_branches master main
set -g theme_git_worktree_support no
set -g theme_use_abbreviated_branch_name yes
Plug 'Vimjas/vim-python-pep8-indent'
Plug 'mattn/calendar-vim'
Plug 'dag/vim-fish'
" Plug 'github/copilot.vim'
Plug 'neovim/nvim-lspconfig'
Plug 'williamboman/mason.nvim'
Plug 'williamboman/mason-lspconfig.nvim'
# プリフィクスを C-l に変更
set-option -g prefix C-l
unbind-key C-b
bind-key C-l send-prefix
# デフォルトシェルを fish とする
set-option -g default-shell /usr/bin/fish
# r で .tmux.conf を再読み込み
bind r source-file ~/.tmux.conf \; display-message "Reloaded"