diff --git a/assets/settings/default.json b/assets/settings/default.json index e6842ae4fa..c1ca00ee0a 100644 --- a/assets/settings/default.json +++ b/assets/settings/default.json @@ -1034,6 +1034,9 @@ "agent": { // Whether the inline assistant should use streaming tools, when available "inline_assistant_use_streaming_tools": true, + // Whether to include project rules files (AGENTS.md, CLAUDE.md, .rules, etc.) + // in the prompt when generating git commit messages. + "commit_message_include_project_rules": true, // Whether the agent is enabled. "enabled": true, // Whether to show the agent panel button in the status bar. diff --git a/crates/agent/src/tool_permissions.rs b/crates/agent/src/tool_permissions.rs index d57cdb9395..02198a3f8d 100644 --- a/crates/agent/src/tool_permissions.rs +++ b/crates/agent/src/tool_permissions.rs @@ -580,6 +580,7 @@ mod tests { inline_assistant_model: None, inline_assistant_use_streaming_tools: false, commit_message_model: None, + commit_message_include_project_rules: true, commit_message_instructions: None, thread_summary_model: None, inline_alternatives: vec![], diff --git a/crates/agent_settings/src/agent_settings.rs b/crates/agent_settings/src/agent_settings.rs index 9b7970ba2c..037307e54e 100644 --- a/crates/agent_settings/src/agent_settings.rs +++ b/crates/agent_settings/src/agent_settings.rs @@ -216,6 +216,7 @@ pub struct AgentSettings { pub inline_assistant_model: Option, pub inline_assistant_use_streaming_tools: bool, pub commit_message_model: Option, + pub commit_message_include_project_rules: bool, pub commit_message_instructions: Option, pub thread_summary_model: Option, pub inline_alternatives: Vec, @@ -747,6 +748,9 @@ impl Settings for AgentSettings { inline_assistant_use_streaming_tools: agent .inline_assistant_use_streaming_tools .unwrap_or(true), + commit_message_include_project_rules: agent + .commit_message_include_project_rules + .unwrap(), commit_message_model: agent.commit_message_model, commit_message_instructions: agent.commit_message_instructions, thread_summary_model: agent.thread_summary_model, diff --git a/crates/agent_ui/src/agent_ui.rs b/crates/agent_ui/src/agent_ui.rs index 4248de814e..ad5940d21c 100644 --- a/crates/agent_ui/src/agent_ui.rs +++ b/crates/agent_ui/src/agent_ui.rs @@ -993,6 +993,7 @@ mod tests { inline_assistant_model: None, inline_assistant_use_streaming_tools: false, commit_message_model: None, + commit_message_include_project_rules: true, commit_message_instructions: None, thread_summary_model: None, inline_alternatives: vec![], diff --git a/crates/git_ui/src/git_panel.rs b/crates/git_ui/src/git_panel.rs index 7efa8f9b42..0ace54e100 100644 --- a/crates/git_ui/src/git_panel.rs +++ b/crates/git_ui/src/git_panel.rs @@ -3041,6 +3041,10 @@ impl GitPanel { }); let temperature = AgentSettings::temperature_for_model(&model, cx); + + let include_project_rules = + AgentSettings::get_global(cx).commit_message_include_project_rules; + let instructions = AgentSettings::get_global(cx) .commit_message_instructions .clone(); @@ -3080,12 +3084,19 @@ impl GitPanel { const MAX_DIFF_BYTES: usize = 20_000; diff_text = Self::compress_commit_diff(&diff_text, MAX_DIFF_BYTES); - let rules_content = - Self::load_project_rules(&project, &repo_work_dir, &mut cx).await; - let user_agents_md = cx.update(|cx| { - UserAgentsMd::global(cx) - .and_then(|user_agents_md| user_agents_md.content().cloned()) - }); + let rules_content = if include_project_rules { + Self::load_project_rules(&project, &repo_work_dir, &mut cx).await + } else { + None + }; + let user_agents_md = if include_project_rules { + cx.update(|cx| { + UserAgentsMd::global(cx) + .and_then(|user_agents_md| user_agents_md.content().cloned()) + }) + } else { + None + }; let prompt = include_str!("../src/commit_message_prompt.txt"); diff --git a/crates/settings_content/src/agent.rs b/crates/settings_content/src/agent.rs index 2e2218c5e3..55bb90dd5c 100644 --- a/crates/settings_content/src/agent.rs +++ b/crates/settings_content/src/agent.rs @@ -248,6 +248,11 @@ pub struct AgentSettingsContent { pub inline_assistant_use_streaming_tools: Option, /// Model to use for generating git commit messages. Defaults to default_model when not specified. pub commit_message_model: Option, + /// Whether to include project rules files (AGENTS.md, CLAUDE.md, .rules, etc.) + /// in the prompt when generating git commit messages. + /// + /// Default: true + pub commit_message_include_project_rules: Option, /// Custom instructions to include in the prompt when generating git commit messages. /// Applied in addition to any project rules files (such as `.rules` or `AGENTS.md`). pub commit_message_instructions: Option,