> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/jp/commander-cli/command-reference/keeper-drive-commands.md).

# 階層型共有フォルダコマンド

### コマンド

**ロールベースのフォルダ権限を備えた階層型共有フォルダ**の導入に伴い、ボルトのフォルダ、共有、権限モデルを一から再構築し、すべてのユーザーとチームがより柔軟でスケールしやすい体験を得られるようになります。

この移行期間中、新しい階層型共有フォルダシステムは既存のクラシックフォルダシステムおよび権限モデルと併存し、2種類のフォルダアイコンでユーザーが容易に区別できるようになっています。

階層型共有フォルダはKeeper v3 API上に構築されています。以下のコマンドは、階層型共有フォルダ内のフォルダとレコードのみを操作します。`nsf-` プレフィックスで名前空間化されているため、クラシックボルトのコマンドと明確に区別されます。

対話型シェル、CLI、JSON設定ファイルのいずれを使用する場合でも、以下の階層型共有フォルダコマンドが利用可能です。各コマンドでは追加のパラメータとオプションが使えます。

特定のコマンドのヘルプを表示するには、以下を実行します。

`help <command>`

<table data-header-hidden><thead><tr><th width="257.9697265625">コマンド</th><th>説明</th></tr></thead><tbody><tr><td><a href="#nsf-list-command"><code>nsf-list</code></a></td><td>階層型共有フォルダのフォルダとレコードを一覧表示</td></tr><tr><td><a href="#nsf-get-command"><code>nsf-get</code></a></td><td>階層型共有フォルダのレコードまたはフォルダの詳細を表示</td></tr><tr><td><a href="#nsf-record-details-command"><code>nsf-record-details</code></a></td><td>1件以上のレコードのメタデータ (タイトル、タイプ、バージョン、リビジョン) を表示</td></tr><tr><td><a href="#nsf-mkdir-command"><code>nsf-mkdir</code></a></td><td>階層型共有フォルダを作成</td></tr><tr><td><a href="#nsf-rndir-command"><code>nsf-rndir</code></a></td><td>階層型共有フォルダの名前変更または色の変更</td></tr><tr><td><a href="#nsf-rmdir-command"><code>nsf-rmdir</code></a></td><td>階層型共有フォルダとその配下すべてを削除</td></tr><tr><td><a href="#nsf-record-add-command"><code>nsf-record-add</code></a></td><td>階層型共有フォルダのレコードを作成</td></tr><tr><td><a href="#nsf-record-update-command"><code>nsf-record-update</code></a></td><td>既存の階層型共有フォルダのレコードを更新</td></tr><tr><td><a href="#nsf-rm-command"><code>nsf-rm</code></a></td><td>階層型共有フォルダのレコードを削除 (ゴミ箱、完全削除、リンク解除)</td></tr><tr><td><a href="#nsf-ln-command"><code>nsf-ln</code></a></td><td>レコードを階層型共有フォルダにリンク</td></tr><tr><td><a href="#nsf-shortcut-command"><code>nsf-shortcut</code></a></td><td>階層型共有フォルダのレコードのショートカットを一覧表示または管理 (2つ以上のフォルダにあるレコード)</td></tr><tr><td><a href="#nsf-share-folder-command"><code>nsf-share-folder</code></a></td><td>フォルダ共有の付与または取り消し</td></tr><tr><td><a href="#nsf-share-record-command"><code>nsf-share-record</code></a></td><td>レコード共有の付与、更新、取り消し、または所有権の移転</td></tr><tr><td><a href="#nsf-record-permission-command"><code>nsf-record-permission</code></a></td><td>フォルダ内のすべてのレコードに対する共有権限を一括更新</td></tr><tr><td><a href="#nsf-transfer-record-command"><code>nsf-transfer-record</code></a></td><td>レコードの所有権を別のユーザーへ移転</td></tr></tbody></table>

***

### nsf-listコマンド <a href="#nsf-list-command" id="nsf-list-command"></a>

**コマンド:** `nsf-list`

**詳細:** ローカルにキャッシュされた階層型共有フォルダのフォルダとレコードを一覧表示します。既定ではフォルダとレコードの両方が表示されます。`--folders` または `--records` で絞り込み、`--format` で出力形式を制御できます。

**スイッチ:**

`--folders` フォルダのみ表示

`--records` レコードのみ表示

`--format <{table, csv, json}>` 出力形式の選択

* `table`: **表**形式で表示 (既定)
* `csv`: **CSV**形式で表示
* `json`: **JSON**形式で表示

`--output <FILENAME>` 出力ファイルのパス (`table` 形式では無視)

**例:**

```
nsf-list
nsf-list --folders
nsf-list --records --format json
nsf-list --format csv --output drive.csv
```

1. 階層型共有フォルダのフォルダとレコードをすべて一覧表示
2. 階層型共有フォルダのフォルダのみ一覧表示
3. すべての階層型共有フォルダのレコードをJSON形式で表示
4. 階層型共有フォルダの一覧全体をCSVファイルへエクスポート

***

### nsf-getコマンド <a href="#nsf-get-command" id="nsf-get-command"></a>

**コマンド:** `nsf-get`

**詳細:** UIDまたはタイトルで階層型共有フォルダのレコードまたはフォルダの詳細を表示します。まず入力をフォルダとして解決し、見つからない場合はレコードとして解決します。レコードではフィールド値とユーザーごとの権限を、フォルダではユーザー/チームの権限と共有管理者を表示します。

**パラメータ:**

階層型共有フォルダのレコードまたはフォルダのUIDまたはタイトル

**スイッチ:**

`--format <{detail, json}>` 出力形式の選択

* `detail`: 人が読める形式のレポート (既定)
* `json`: 機械可読なJSON

`-v`, `--verbose` 各アクセサの権限内訳をフラグ単位で表示

`--unmask` マスクされたフィールド値 (パスワード、シークレット、PIN) を表示。出力は**stdoutのみ**に送られ、ログファイルには書き込まれません

**例:**

```
nsf-get rvwIBG_ban2VTH64OsnzLn
nsf-get "My Drive Folder"
nsf-get rvwIBG_ban2VTH64OsnzLn --format json
nsf-get rvwIBG_ban2VTH64OsnzLn --unmask
nsf-get rvwIBG_ban2VTH64OsnzLn -v
```

1. UIDで階層型共有フォルダオブジェクト (レコードまたはフォルダ) の詳細を表示
2. 名前で階層型共有フォルダの詳細を表示
3. JSON形式でレコードの詳細を表示
4. マスクされたフィールドを平文で表示してレコードの詳細を表示
5. フラグ単位の権限内訳を含めてレコードの詳細を表示

`--unmask` は機密データ (パスワード、シークレット) をターミナルに表示します。使用前に安全な環境であることをご確認ください。

***

### nsf-record-detailsコマンド <a href="#nsf-record-details-command" id="nsf-record-details-command"></a>

**コマンド:** `nsf-record-details`

**詳細:** v3 APIを使用して、1件以上の階層型共有フォルダのレコードのメタデータ (タイトル、タイプ、バージョン、リビジョン) を取得します。フィールド値をすべて出力せずにレコード属性を素早く確認する場合に便利です。

**パラメータ:**

1件以上のレコードUID (またはタイトル。UIDへ解決)

**スイッチ:**

`--format <{table, json}>` 出力形式の選択

* `table`: 人が読めるテキスト (既定)
* `json`: JSON出力

**例:**

```
nsf-record-details rvwIBG_ban2VTH64OsnzLn
nsf-record-details rvwIBG_ban2VTH64OsnzLn AbCDef0123456789hIJklM
nsf-record-details rvwIBG_ban2VTH64OsnzLn --format json
```

1. 単一レコードのメタデータを表示
2. 1回の呼び出しで複数レコードのメタデータを表示
3. レコードメタデータをJSONで出力

***

### nsf-mkdirコマンド <a href="#nsf-mkdir-command" id="nsf-mkdir-command"></a>

**コマンド:** `nsf-mkdir`

**詳細:** v3 APIを使用して新しい階層型共有フォルダを作成します。ユーザーが階層型共有フォルダ内で `cd` している場合は現在のフォルダの子として作成され、それ以外の場合は階層型共有フォルダのルートに作成されます。

**パラメータ:**

フォルダ名 (`//` で名前内のリテラル `/` を埋め込めます。ネストしたパスは非対応: `nsf-mkdir` は1回の呼び出しでフォルダを1つだけ作成)

**スイッチ:**

`--color <{none, red, orange, yellow, green, blue, gray}>` フォルダの色を設定

`--no-inherit` 親フォルダの権限を継承しない (新規フォルダは共有なしで開始)

**例:**

```
nsf-mkdir Engineering
nsf-mkdir "Q1 Reports" --color blue
nsf-mkdir Confidential --no-inherit
nsf-mkdir "Side/Project"
```

1. 現在の場所の下に「Engineering」という名前のフォルダを作成
2. 青色の「Q1 Reports」フォルダを作成
3. 親フォルダの権限を継承しないフォルダを作成
4. リテラル名にスラッシュを含むフォルダを作成: `Side/Project`

同じ親の下に同じ名前のフォルダが既にある場合、`nsf-mkdir` は重複を作成せず、警告をログに記録して既存フォルダのUIDを返します。

***

### nsf-rndirコマンド <a href="#nsf-rndir-command" id="nsf-rndir-command"></a>

**コマンド:** `nsf-rndir`

**詳細:** 階層型共有フォルダの名前変更、色の変更、または親権限継承設定の更新を行います。`--name`、`--color`、`--inherit`、`--no-inherit` のいずれか1つ以上が必要です。

**パラメータ:**

既存の階層型共有フォルダのパスまたはUID

**スイッチ:**

`-n`, `--name <NAME>` 新しいフォルダ名

`--color <{none, red, orange, yellow, green, blue, gray}>` フォルダの色を設定/変更

`-q`, `--quiet` 名前変更後の確認メッセージを抑制

**例:**

```
nsf-rndir Engineering --name "Engineering Team"
nsf-rndir zXuYXRYWgsie5TBPzQACLw --color red
nsf-rndir "Old Folder" --name "New Folder" --color green
```

1. フォルダの名前を変更
2. UIDでフォルダの色を変更
3. 1回の呼び出しで名前変更と色の変更を同時に実行

***

### nsf-rmdirコマンド <a href="#nsf-rmdir-command" id="nsf-rmdir-command"></a>

**コマンド:** `nsf-rmdir`

**詳細:** 1つ以上の階層型共有フォルダとその配下すべてを削除します。確認を求める前に、必ずプレビューを実行します (影響: サブフォルダ、レコード、影響を受けるユーザーとチーム)。1回の呼び出しで削除できるフォルダは**最大100件**です。

**パラメータ:**

1つ以上のフォルダUIDまたは名前

**スイッチ:**

`--operation`, `-o <{folder-trash, delete-permanent}>` 削除操作 (既定: `folder-trash`)

* `folder-trash`: 復元可能。フォルダはゴミ箱へ
* `delete-permanent`: **元に戻せない**。フォルダとその内容は完全に破棄

`--force`, `-f` 確認プロンプトをスキップし、プレビュー後に即座に実行

`--dry-run` プレビューのみ実行。何も削除しない (`--force` と排他)

`--quiet`, `-q` フォルダごとの詳細を抑制し、サマリーのみ表示

**例:**

```
nsf-rmdir Engineering
nsf-rmdir zXuYXRYWgsie5TBPzQACLw -f
nsf-rmdir folder1 folder2 folder3
nsf-rmdir Confidential --operation delete-permanent
nsf-rmdir Engineering --dry-run
```

1. 「Engineering」フォルダをゴミ箱へ移動 (確認あり)
2. プロンプトなしでUID指定のフォルダをゴミ箱へ
3. 1回の呼び出しで複数フォルダをゴミ箱へ
4. フォルダとその内容を完全に削除 (**元に戻せない**)
5. 実際には削除せず、削除の影響をプレビュー

`--operation delete-permanent` は取り消せません。対象フォルダ内のすべてのサブフォルダとレコードが完全に破棄されます。

***

### nsf-record-addコマンド <a href="#nsf-record-add-command" id="nsf-record-add-command"></a>

**コマンド:** `nsf-record-add`

**詳細:** 新しい階層型共有フォルダのレコードを作成します。クラシックの `record-add` コマンドと同様で、すべての標準レコードタイプ、カスタムレコードタイプ、標準フィールド、カスタムフィールドに対応します。フィールド指定の詳細な例は `--syntax-help` をご参照ください。

**パラメータ:**

標準フィールド構文 `<FIELD_NAME>=<FIELD_VALUE>` を使った、スペース区切りのフィールド値のリスト。詳細は `--syntax-help` を参照

**スイッチ:**

`-t`, `--title <TITLE>` レコードタイトル (**必須**)

`-rt`, `--record-type <TYPE>` レコードタイプ (**必須**)。標準レコードタイプの一覧を参照

`-n`, `--notes <NOTES>` レコードのメモ

`--folder <FOLDER>` 新規レコードを格納するフォルダ名またはUID (省略時は階層型共有フォルダのルート)

`-f`, `--force` 警告 (例: 非対応の添付フィールド) を無視してレコードを作成

`--syntax-help` フィールド構文の詳細を表示して終了

**例:**

```
nsf-record-add --title "Sample Login" --record-type login --folder Engineering login=alice@example.com password=$GEN url=https://www.google.com
nsf-record-add -t "Empty Classic Record" -rt legacy
nsf-record-add --syntax-help
```

1. 生成パスワード付きで「Engineering」フォルダにログインレコードを作成
2. 階層型共有フォルダのルートに空の「classic」レコードを作成
3. フィールド構文のヘルプを表示して終了

`nsf-record-add` ではファイル添付はまだ利用できません。ファイルを添付する場合はクラシックの `record-add` コマンドを使用してください。

#### パスフレーズのルール

`$GEN:passphrase` は小文字の `password` フィールドにのみ使用してください。`'$GEN:...'` はシングルクォートで囲みます。

`$GEN:passphrase` は `Password=` では動作しません。`login`、`general`、`serverCredentials`、`databaseCredentials` など、組み込みのパスワードフィールドを持つレコードタイプでのみ使用できます。

`contact` など、パスワードフィールドを持たないレコードタイプでは動作しません。レコードタイプにパスワードフィールドが含まれるかは、`record-type-info --list-record <type>` で確認してください。

**構文**

```bash
password='$GEN:passphrase[,word_count[,separator[,capitalize[,number]]]]'
```

**ルール**

* `word_count` は `5` から `9` のみ
* `5` から `9` がボルトでサポートされる範囲
* 範囲外の値は受け付け不可
* 無効な値はエラー
* 区切り文字は `-`、`.`、`_`、`?`、`!`、または `space`
* `$GEN` 構文では、`space` の別名として `sp` を使用可能
* `capitalize` は `true` または `false` のみ
* `number` は `true` または `false` のみ
* ブール値の照合は大文字小文字を区別しない
* `tr`、`fa`、`test` などの部分値は受け付け不可

エンタープライズポリシーは、引き続き `passphrase-allow`、語数、区切り文字を制御します。

コマンダーは、CLIで明示的に `false` に設定しない限り、パスフレーズ生成時の先頭大文字化と先頭語の数字をオンにします。ポリシーで大文字化や数字がオフに設定されている場合、ボルトUIとは動作が異なります。

`--force` で回避できるのはパスワードポリシーの警告のみです。`$GEN` の構文エラーは回避できません。

**有効な例**

```bash
nsf-record-add -t "Nested Passphrase Login" -rt login \
  --folder Engineering \
  login=alice@example.com \
  password='$GEN:passphrase,7,_'

nsf-record-update -r "Nested Passphrase Login" \
  password='$GEN:passphrase,7,-'

nsf-record-update -r "Nested Passphrase Login" \
  password='$GEN:passphrase,7,sp,false,false'
```

**検証とエラー**

無効な `$GEN` 構文を指定した場合、コマンドは実行されません。レコードの作成、更新、保存はいずれも行われません。

以下は構文エラーです。

* `$GEN:pas,7,_` や `$GEN:passphra,7,_` などの未知のアルゴリズム
* `*`、`@`、`#` などの無効な区切り文字
* `$GEN:passphrase,9,_,true,` などの末尾カンマ
* 範囲外の語数
* `tr`、`fa`、`test` などの部分ブール値

**無効な例**

```bash
nsf-record-add -t "Bad Nested Passphrase" -rt login \
  password='$GEN:passphrase,4,_'

nsf-record-add -t "Bad Nested Separator" -rt login \
  password='$GEN:passphrase,7,#'

nsf-record-update -r "Nested Passphrase Login" \
  password='$GEN:pas,7,_'

nsf-record-update -r "Nested Passphrase Login" \
  password='$GEN:passphrase,9,_,true,'
```

***

### nsf-record-updateコマンド <a href="#nsf-record-update-command" id="nsf-record-update-command"></a>

**コマンド:** `nsf-record-update`

**詳細:** 既存の階層型共有フォルダのレコードを更新します。タイトル、メモ、レコードタイプ、個別フィールドを変更できます。`-r` を複数回指定すると、1回の呼び出しで複数レコードを更新できます。

**パラメータ:**

標準フィールド構文 `<FIELD_NAME>=<FIELD_VALUE>` を使った、スペース区切りのフィールド値のリスト

**スイッチ:**

`-r`, `--record <RECORD>` 更新対象のレコードパスまたはUID (**必須**、繰り返し可能)

`-t`, `--title <TITLE>` レコードタイトルを変更

`-rt`, `--record-type <TYPE>` レコードタイプを変更

`-n`, `--notes <NOTES>` レコードのメモを追加/変更

`-f`, `--force` 警告を無視

`--syntax-help` フィールド構文の詳細を表示して終了

**例:**

```
nsf-record-update -r rvwIBG_ban2VTH64OsnzLn --title "Updated Title"
nsf-record-update -r rvwIBG_ban2VTH64OsnzLn password=$GEN
nsf-record-update -r rec1 -r rec2 --notes "Reviewed during Q1 audit"
nsf-record-update --syntax-help
```

1. レコードの名前を変更
2. レコードのパスワードを置き換え (`$GEN` で再生成)
3. 1回の呼び出しで複数レコードのメモを更新
4. フィールド構文のヘルプを表示

パスフレーズ生成には小文字の `password=` フィールドを使用してください。`'$GEN:passphrase'` はシングルクォートで囲みます。無効な `$GEN` 構文を指定した場合、更新は実行されず、レコードは保存されません。

***

### nsf-rmコマンド <a href="#nsf-rm-command" id="nsf-rm-command"></a>

**コマンド:** `nsf-rm`

**詳細:** 1件以上の階層型共有フォルダのレコードを削除します。必ずプレビューを実行し (影響: フォルダ、追加の配置場所、影響を受けるユーザー/チーム)、確認を求めます。1回の呼び出しで削除できるレコードは**最大500件**です。3種類の削除操作に対応しています。

**パラメータ:**

1件以上のレコードUIDまたはタイトル

**スイッチ:**

`--folder <FOLDER>` 削除の文脈となるフォルダUIDまたは名前 (`--operation unlink` 使用時は必須)

`--operation`, `-o <{owner-trash, folder-trash, unlink}>` 削除操作 (既定: `owner-trash`)

* `owner-trash`: 所有者のみがレコードを削除。所有者のゴミ箱へ
* `folder-trash`: 指定フォルダの文脈からレコードを削除してゴミ箱へ
* `unlink`: 特定フォルダからのみレコードを削除。他のフォルダにあるレコード本体は残る (`--folder` が必要)

`--force`, `-f` 確認プロンプトをスキップし、プレビュー後に即座に実行

`--dry-run` プレビューのみ (`--force` と排他)

**例:**

```
nsf-rm rvwIBG_ban2VTH64OsnzLn
nsf-rm "Old Login" -f
nsf-rm rec1 rec2 rec3
nsf-rm rvwIBG_ban2VTH64OsnzLn --folder Engineering --operation unlink
nsf-rm rvwIBG_ban2VTH64OsnzLn --dry-run
```

1. 所有者のゴミ箱へレコードを移動 (確認あり)
2. プロンプトなしでタイトル指定のレコードを強制削除
3. 1回の呼び出しで複数レコードを削除
4. 「Engineering」フォルダからのみレコードのリンクを解除 (他のフォルダには残す)
5. 実際には削除せず、削除の影響をプレビュー

***

### nsf-lnコマンド <a href="#nsf-ln-command" id="nsf-ln-command"></a>

**コマンド:** `nsf-ln`

**詳細:** 既存の階層型共有フォルダのレコードを階層型共有フォルダにリンクします。レコードは元のフォルダと宛先フォルダの両方に表示されます (ハードリンクに類似)。

**パラメータ:**

2つの位置引数: `RECORD FOLDER`

* `RECORD`: レコードUID、タイトル、またはパス
* `FOLDER`: 宛先フォルダUIDまたは名前

**例:**

```
nsf-ln rvwIBG_ban2VTH64OsnzLn Engineering
nsf-ln "Twitter" Marketing
nsf-ln rvwIBG_ban2VTH64OsnzLn /
```

1. レコード (UID) を「Engineering」フォルダにリンク
2. レコード (タイトル) を「Marketing」フォルダにリンク
3. レコードを階層型共有フォルダのルートにリンク

***

### nsf-shortcutコマンド <a href="#nsf-shortcut-command" id="nsf-shortcut-command"></a>

**コマンド:** `nsf-shortcut <subcommand>`

**詳細:** 階層型共有フォルダのレコードのショートカットを一覧表示または管理します。同じレコードが2つ以上のフォルダにリンクされている場合に「ショートカット」が存在します。

**サブコマンド:**

* `list <RECORD UID, FOLDER UID, or PATH>`: 2つ以上のフォルダに存在するレコードを表示 (レコードまたはフォルダで絞り込み可能)
* `keep <RECORD> <FOLDER>`: 指定した1つのフォルダにのみレコードを残し、他のすべてのショートカットを削除

**`nsf-shortcut list`**

**スイッチ:**

`--format <{table, csv, json}>` 出力形式の選択 (既定: `table`)

`--output <FILENAME>` 出力先ファイル

**例:**

```
nsf-shortcut list
nsf-shortcut list --format csv --output shortcuts.csv
nsf-shortcut list rvwIBG_ban2VTH64OsnzLn
nsf-shortcut list Engineering
```

1. 2つ以上のフォルダに存在するすべてのレコードを表示
2. ショートカット一覧をCSVファイルへエクスポート
3. 特定レコード (UID) のショートカットのみ表示
4. 「Engineering」フォルダ内のショートカットレコードのみ表示

**`nsf-shortcut keep`**

**スイッチ:**

`-f`, `--force` 余分なショートカットを削除する前にプロンプトを表示しない

**例:**

```
nsf-shortcut keep rvwIBG_ban2VTH64OsnzLn Engineering
nsf-shortcut keep "API Key" Production -f
nsf-shortcut keep rvwIBG_ban2VTH64OsnzLn
```

1. 「Engineering」フォルダにのみ「API Key」を残し、他のすべてのフォルダから削除 (確認あり)
2. プロンプトなしで「Production」フォルダにのみレコードを残す
3. **現在の**フォルダにのみレコードを残す (フォルダ未指定時は現在のフォルダを使用。階層型共有フォルダ内で `cd` している必要あり)

{% hint style="info" %}
`nsf-shortcut keep` が削除するのは *リンク* のみです。選択したフォルダに残すレコード本体は保持されます。
{% endhint %}

***

### nsf-share-folderコマンド <a href="#nsf-share-folder-command" id="nsf-share-folder-command"></a>

**コマンド:** `nsf-share-folder`

**詳細:** 1つ以上の階層型共有フォルダに対する共有の付与または取り消しを行います。ユーザーのメール、チーム名/UID、およびフォルダ上の現在のすべてのユーザーとチームに展開される特殊な `@existing` 受信者に対応しています (呼び出し元は除く)。

**パラメータ:**

1つ以上のフォルダパスまたはUID (位置引数、繰り返し可能)

**スイッチ:**

`-a`, `--action <{grant, remove}>` フォルダ共有アクション (既定: `grant`)。`grant` は既存の共有も更新します

`-e`, `--email <USER>` 受信者: アカウントメール、チーム名、チームUID、またはフォルダ上のすべてのユーザーとチーム用の `@existing` (繰り返し可能)

`-r`, `--role <ROLE>` 権限ロール (既定: `viewer`)。`grant` では必須。指定可能な値:

* `viewer`
* `share-manager`
* `content-manager`
* `content-share-manager`
* `full-manager`

`--expire-at <TIMESTAMP>` 共有の有効期限。`never` またはISO日時 (例: `2027-01-01T00:00:00Z`)

`--expire-in <PERIOD>` 共有の有効期限。`never` または相対期間 (例: `30d`、`6mo`、`1y`、`24h`、`30mi`)

**例:**

```
nsf-share-folder Engineering -e alice@example.com -r viewer
nsf-share-folder Engineering -e alice@example.com -e bob@example.com -r content-manager
nsf-share-folder Engineering -e "Engineering Team" -r full-manager
nsf-share-folder Engineering -a grant -e alice@example.com -r viewer --expire-in 30d
nsf-share-folder Engineering -a remove -e alice@example.com
nsf-share-folder Engineering -a remove -e @existing
```

1. 単一ユーザーにviewerアクセスを付与
2. 1回の呼び出しで複数ユーザーにcontent-managerアクセスを付与
3. チーム (チーム名) にfull-managerアクセスを付与
4. 30日後に自動失効するviewerアクセスを付与
5. フォルダから単一ユーザーを削除
6. フォルダから既存のすべてのユーザーとチームを削除 (呼び出し元は除く)

`--expire-at` と `--expire-in` は同時に指定できません。

***

### nsf-share-recordコマンド <a href="#nsf-share-record-command" id="nsf-share-record-command"></a>

**コマンド:** `nsf-share-record`

**詳細:** 階層型共有フォルダのレコードの共有を管理します。付与、更新、取り消し、所有権の移転に対応しています。`record` 引数にはレコードUID、レコードタイトル、またはフォルダを指定できます (フォルダの場合はフォルダ内のすべてのレコードが処理され、`-R` と組み合わせるとサブフォルダも再帰的に対象になります)。

**パラメータ:**

レコードのパス/UIDまたはフォルダのパス/UID (位置引数)

**スイッチ:**

`-e`, `--email <EMAIL>` 受信者のメール (**必須**、繰り返し可能)

`-a`, `--action <{grant, revoke, owner}>` 共有アクション (既定: `grant`)

* `grant`: レコードを共有 (既存の共有も更新)
* `revoke`: 共有を削除
* `owner`: レコードの所有権を移転 (受信者は1名のみ)

`-r`, `--role <ROLE>` 権限ロール。`grant` では必須。指定可能な値: `viewer`、`share-manager`、`content-manager`、`content-share-manager`、`full-manager`

`-R`, `--recursive` フォルダ内およびサブフォルダ内のすべてのレコードにコマンドを適用

`--contacts-only` 既知の連絡先へのみ共有 (`--force` なしでは未知のメールアドレスを拒否)

`-f`, `--force` 確認プロンプトをスキップ (例: `--contacts-only` の確認)

`--dry-run` 変更をコミットせず権限変更を表示

`--expire-at <EXPIRE_AT>` 共有の有効期限。`never` またはUTC日時 (例: `2027-01-01T00:00:00Z`)

`--expire-in <PERIOD>` 共有の有効期限。`never` または相対期間 (例: `30d`、`6mo`、`1y`)

**例:**

```
nsf-share-record rvwIBG_ban2VTH64OsnzLn -e alice@example.com -r viewer
nsf-share-record "API Key" -e alice@example.com -e bob@example.com -r content-manager
nsf-share-record Engineering -e alice@example.com -r viewer -R
nsf-share-record rvwIBG_ban2VTH64OsnzLn -e alice@example.com -r viewer --expire-in 30d
nsf-share-record rvwIBG_ban2VTH64OsnzLn -e alice@example.com -a revoke
nsf-share-record rvwIBG_ban2VTH64OsnzLn -e bob@example.com -a owner
nsf-share-record rvwIBG_ban2VTH64OsnzLn -e alice@example.com -r viewer --dry-run
```

1. 単一ユーザーをviewerとしてレコードを共有
2. 1回の呼び出しで複数ユーザーにレコードを共有
3. 「Engineering」フォルダとそのサブフォルダ内のすべてのレコードを単一ユーザーと共有
4. 30日で失効する共有を設定
5. 共有を取り消し
6. レコードの所有権を移転 (移転完了後はアクセスを失います)
7. コミットせず共有をプレビュー

{% hint style="warning" %}
`-a owner` はレコードの所有権を移転します。移転が受理されると、**レコードへのアクセスは失われます**。受信者は1名のみ指定できます。
{% endhint %}

***

### nsf-record-permissionコマンド <a href="#nsf-record-permission-command" id="nsf-record-permission-command"></a>

**コマンド:** `nsf-record-permission`

**詳細:** 階層型共有フォルダ内のすべてのレコードに対する共有権限を一括更新します。フォルダ全体の権限を正規化する場合に便利です (例: 「`Production` フォルダ内のすべての共有をviewerにする」)。親共有フォルダから継承された権限にも対応し、継承行を上書きするために新しい直接共有を作成します。

**パラメータ:**

フォルダパスまたはフォルダUID (位置引数、任意: 省略時は階層型共有フォルダのルート)

**スイッチ:**

`-a`, `--action <{grant, revoke}>` 実行するアクション (**必須**)

* `grant`: 該当するすべての共有を `--role` に設定
* `revoke`: 該当するすべての共有を削除 (`--role` 指定時はそのロールのみ)

`-r`, `--role <ROLE>` 付与するロール、または取り消しのフィルタ。指定可能な値: `viewer`、`share-manager`、`content-manager`、`content-share-manager`、`full-manager`

`-R`, `--recursive` フォルダ内およびサブフォルダ内のすべてのレコードに変更を適用

`--dry-run` 変更をコミットせず権限変更を表示

`-f`, `--force` 確認なしで変更を適用

**例:**

```
nsf-record-permission Engineering -a grant -r viewer
nsf-record-permission Engineering -a grant -r content-manager -R
nsf-record-permission Engineering -a revoke
nsf-record-permission Engineering -a revoke -r viewer
nsf-record-permission Engineering -a grant -r viewer --dry-run
nsf-record-permission Engineering -a grant -r viewer -f
```

1. 「Engineering」フォルダ内のすべてのレコード共有を `viewer` に設定
2. 「Engineering」とそのサブフォルダ内のすべてのレコード共有を `content-manager` に設定
3. 「Engineering」内のすべてのレコードについて、所有者以外の**すべて**の共有を取り消し
4. 「Engineering」内のレコードについて、`viewer` 共有のみを取り消し
5. コミットせず計画された権限変更をプレビュー
6. 確認なしで変更を適用

親共有フォルダから継承された共有は、レコードレベルでは取り消せません。親共有フォルダから削除する必要があります。該当する共有は**skipped**として一覧表示されます。

***

### nsf-transfer-recordコマンド <a href="#nsf-transfer-record-command" id="nsf-transfer-record-command"></a>

**コマンド:** `nsf-transfer-record`

**詳細:** 1件以上の階層型共有フォルダのレコードの所有権を別のユーザーへ移転します。移転が成功すると、元の所有者はレコードへのアクセスを失います。より細かい制御には `nsf-share-record -a owner` をご参照ください。

**パラメータ:**

2つの位置引数: `RECORD_UIDS... NEW_OWNER_EMAIL`

* 1件以上のレコードUID (またはタイトル) のあとに
* 新しい所有者のメールアドレス

**例:**

```
nsf-transfer-record rvwIBG_ban2VTH64OsnzLn alice@example.com
nsf-transfer-record rec1 rec2 rec3 alice@example.com
```

1. レコードの所有権を別のユーザーへ移転
2. 複数レコードの所有権を同じ新しい所有者へ移転

{% hint style="warning" %}
所有権を移転すると、レコードへのアクセスは失われます。実行前に新しい所有者が正しいことをご確認ください。
{% endhint %}

***

### ロールリファレンス <a href="#roles-reference" id="roles-reference"></a>

複数の階層型共有フォルダ共有コマンドで `--role` オプションを指定できます。利用可能なロールを権限の高い順に示します。

| ロール                     | 説明                               |
| ----------------------- | -------------------------------- |
| `viewer`                | レコードへの読み取り専用アクセス                 |
| `share-manager`         | 他ユーザーのアクセス管理が可能 (コンテンツは編集不可)     |
| `content-manager`       | レコード内容の編集が可能 (共有は管理不可)           |
| `content-share-manager` | レコード内容の編集と共有の管理の両方が可能            |
| `full-manager`          | 編集、共有、委任の完全制御。レコード/フォルダの共有管理者に相当 |

***

### 操作リファレンス <a href="#operation-reference" id="operation-reference"></a>

`nsf-rm` と `nsf-rmdir` は、削除の実行方法を決める `--operation` フラグを受け付けます。

| 操作                 | 適用先                            | 説明                                      |
| ------------------ | ------------------------------ | --------------------------------------- |
| `owner-trash`      | `nsf-rm` (既定)                  | 所有者のみが削除: レコードは所有者のゴミ箱へ                 |
| `folder-trash`     | `nsf-rm`、`nsf-rmdir` (フォルダの既定) | 指定フォルダの文脈からレコード/フォルダを削除してゴミ箱へ。ゴミ箱から復元可能 |
| `unlink`           | `nsf-rm`                       | 指定フォルダからのみレコードを削除。レコード本体は他のフォルダに残る      |
| `delete-permanent` | `nsf-rmdir`                    | **元に戻せない**: フォルダとその内容を完全に破棄             |

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/commander-cli/command-reference/keeper-drive-commands.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
