From c13d66e9c8ca806d2177376128d497ffd02c480d Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Thu, 4 Jun 2026 14:19:24 -0600 Subject: [PATCH] feat: Fallthrough on missing secrets during mcp.json merging --- src/config/install_remote.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/config/install_remote.rs b/src/config/install_remote.rs index 1c1cd3e..4c5e2b9 100644 --- a/src/config/install_remote.rs +++ b/src/config/install_remote.rs @@ -4,7 +4,7 @@ use inquire::{Confirm, Select}; use std::ffi::{OsStr, OsString}; use std::fs; use std::path::{Path, PathBuf}; - +use indoc::formatdoc; use crate::config::{InstallFilter, paths}; #[cfg(not(windows))] use crate::function::Language; @@ -732,7 +732,17 @@ fn merge_mcp_json( write_atomically(&final_path, &serialized)?; let vault = Vault::init_bare()?; - let (_parsed, missing) = interpolate_secrets(&serialized, &vault)?; + let missing = match interpolate_secrets(&serialized, &vault) { + Ok((_, missing)) => missing, + Err(e) => { + eprintln!("{}", formatdoc!{" + Skipping secret resolution for merged mcp.json: {e:#} + Continuing without resolving missing secrets + You may need to add any additional missing secrets to the vault manually. + "}); + Vec::new() + } + }; let mut deduped: Vec = Vec::new(); for s in missing { if !deduped.contains(&s) {