diff --git a/evalbench/generators/models/gemini_cli.py b/evalbench/generators/models/gemini_cli.py index 3b69a8a0..b12eba35 100644 --- a/evalbench/generators/models/gemini_cli.py +++ b/evalbench/generators/models/gemini_cli.py @@ -46,6 +46,32 @@ def __init__(self, querygenerator_config): os.makedirs(self.extensions_dir, exist_ok=True) os.makedirs(self.skills_dir, exist_ok=True) + # Allow-list the fake home directory to enable access to files under it. + # This is needed to ensure Gemini CLI can read files within a skill + # after resuming the session. + gemini_settings_path = os.path.join(self.gemini_home, "settings.json") + os.makedirs(os.path.dirname(gemini_settings_path), exist_ok=True) + + current_settings = {} + if os.path.exists(gemini_settings_path): + try: + with open(gemini_settings_path, "r") as f: + current_settings = json.load(f) + except json.JSONDecodeError: + logging.warning( + "Invalid JSON in Gemini settings at %s; using default settings.", + gemini_settings_path, + ) + + context_config = current_settings.setdefault("context", {}) + include_dirs = context_config.setdefault("includeDirectories", []) + + if self.fake_home not in include_dirs: + include_dirs.append(self.fake_home) + + with open(gemini_settings_path, "w") as f: + json.dump(current_settings, f, indent=2) + self.env = querygenerator_config.get("env", {}) self.env["HOME"] = self.fake_home