# 配置与身份认证

运行资源命令前，先配置 Product API 服务地址和个人访问令牌，再通过只读命令发现并选择工作区。`moi-cli` 将这些值保存到 `~/.moi-cli.json`；令牌在 `config show` 中会被遮蔽显示。

## 配置连接信息

```shell
moi-cli config set-endpoint "<Product API Base URL ending in /newmoi>"
moi-cli config set-api-key "<personal-access-token>"
```

服务地址使用当前环境提供的完整 Product API Base URL，并且必须包含 `/newmoi`。CLI 不会自动补充该前缀。个人访问令牌按原始值传入；不要添加 `Bearer` 前缀，也不要将令牌写入脚本、终端历史或代码仓库。

列出当前身份可见的工作区，再保存要操作的工作区 ID：

```shell
moi-cli -o workspace list
moi-cli config set-workspace "<workspace-id-from-list>"
```

运行以下命令检查已保存的配置：

```shell
moi-cli config show
```

输出中应显示服务地址和工作区 ID，`api_key` 显示为掩码。仅列出工作区时不需要预先配置工作区 ID；其他工作区作用域命令缺少任一必要值时，先补齐配置再运行。

## 为单次命令提供配置

可以在当前命令中传入服务地址、令牌或工作区，不修改已保存配置：

```shell
moi-cli \
  -endpoint "<Product API Base URL ending in /newmoi>" \
  -api-key "<personal-access-token>" \
  -workspace-id "<workspace-id>" \
  workspace-member current-principal
```

仅在安全的运行环境中传入令牌。共享终端、CI 日志和进程列表可能暴露命令行参数；优先使用受保护的配置文件或部署提供的密钥注入方式。

## 配置工作区角色

需要为某个工作区选择当前角色时，保存该工作区和角色的对应关系：

```shell
moi-cli config set-role "<workspace-id>" "<role-id>"
```

使用 `moi-cli config unset-role <workspace-id>` 删除该工作区的已保存角色。角色配置只影响对应工作区；切换工作区时，重新确认角色和权限。
