8484 'always-thinking-enabled' : 'alwaysThinkingEnabled' ,
8585 'company-announcements' : 'companyAnnouncements' ,
8686 'env-variables' : 'env' , # Different names
87+ 'effort-level' : 'effortLevel' , # Adaptive reasoning effort
8788}
8889
8990
@@ -5050,6 +5051,7 @@ def create_additional_settings(
50505051 company_announcements : list [str ] | None = None ,
50515052 attribution : dict [str , str ] | None = None ,
50525053 status_line : dict [str , Any ] | None = None ,
5054+ effort_level : str | None = None ,
50535055) -> bool :
50545056 """Create {command_name}-additional-settings.json with environment-specific settings.
50555057
@@ -5073,6 +5075,9 @@ def create_additional_settings(
50735075 'padding' key, and optional 'config' key for config file reference.
50745076 Both the script and config file are downloaded to ~/.claude/hooks/ and
50755077 the config path is appended as a command line argument.
5078+ effort_level: Optional effort level for adaptive reasoning.
5079+ Valid values: 'low', 'medium', 'high'. Controls how much thinking
5080+ is allocated based on task complexity.
50765081
50775082 Returns:
50785083 bool: True if successful, False otherwise.
@@ -5130,6 +5135,11 @@ def create_additional_settings(
51305135 settings ['alwaysThinkingEnabled' ] = always_thinking_enabled
51315136 info (f'Setting alwaysThinkingEnabled: { always_thinking_enabled } ' )
51325137
5138+ # Add effortLevel if explicitly set (None means not configured, leave as default)
5139+ if effort_level is not None :
5140+ settings ['effortLevel' ] = effort_level
5141+ info (f'Setting effortLevel: { effort_level } ' )
5142+
51335143 # Add companyAnnouncements if explicitly set (None means not configured, leave as default)
51345144 if company_announcements is not None :
51355145 settings ['companyAnnouncements' ] = company_announcements
@@ -6244,6 +6254,17 @@ def main() -> None:
62446254 # Extract status_line configuration
62456255 status_line = config .get ('status-line' )
62466256
6257+ # Extract and validate effort_level configuration
6258+ effort_level = config .get ('effort-level' )
6259+ if effort_level is not None :
6260+ valid_effort_levels = ('low' , 'medium' , 'high' )
6261+ if effort_level not in valid_effort_levels :
6262+ warning (
6263+ f'Invalid effort-level value: { effort_level !r} . '
6264+ f'Valid values: { ", " .join (valid_effort_levels )} . Skipping.' ,
6265+ )
6266+ effort_level = None
6267+
62476268 # Extract user-settings configuration (global user-level settings)
62486269 user_settings = config .get ('user-settings' )
62496270
@@ -6501,6 +6522,7 @@ def main() -> None:
65016522 company_announcements ,
65026523 attribution ,
65036524 status_line_arg ,
6525+ effort_level ,
65046526 )
65056527
65066528 # Step 15: Create launcher script
@@ -6613,6 +6635,8 @@ def main() -> None:
66136635 print (f' * Environment variables: { len (env_variables )} configured' )
66146636 if company_announcements :
66156637 print (f' * Company announcements: { len (company_announcements )} configured' )
6638+ if effort_level :
6639+ print (f' * Effort level: { effort_level } ' )
66166640 if status_line and isinstance (status_line , dict ):
66176641 status_line_dict = cast (dict [str , Any ], status_line )
66186642 status_line_file_val = status_line_dict .get ('file' , '' )
0 commit comments