Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

name description tags
Session Auto-Commit
Automatically commits and pushes changes when a Copilot coding agent session ends
automation
git
productivity

Session Auto-Commit Hook

Automatically commits and pushes changes when a GitHub Copilot coding agent session ends, ensuring your work is always saved and backed up.

Overview

This hook runs at the end of each Copilot coding agent session and automatically:

  • Detects if there are uncommitted changes
  • Stages all changes
  • Creates a timestamped commit
  • Pushes to the remote repository

Features

  • Automatic Backup: Never lose work from a Copilot session
  • Timestamped Commits: Each auto-commit includes the session end time
  • Safe Execution: Only commits when there are actual changes
  • Error Handling: Gracefully handles push failures

Installation

  1. Copy this hook folder to your repository's .github/hooks/ directory:

    cp -r hooks/session-auto-commit .github/hooks/
  2. Ensure the script is executable:

    chmod +x .github/hooks/session-auto-commit/auto-commit.sh
  3. Commit the hook configuration to your repository's default branch

Configuration

The hook is configured in hooks.json to run on the sessionEnd event:

{
  "version": 1,
  "hooks": {
    "sessionEnd": [
      {
        "type": "command",
        "bash": ".github/hooks/session-auto-commit/auto-commit.sh",
        "timeoutSec": 30
      }
    ]
  }
}

How It Works

  1. When a Copilot coding agent session ends, the hook executes
  2. Checks if inside a Git repository
  3. Detects uncommitted changes using git status
  4. Stages all changes with git add -A
  5. Creates a commit with format: auto-commit: YYYY-MM-DD HH:MM:SS
  6. Attempts to push to remote
  7. Reports success or failure

Customization

You can customize the hook by modifying auto-commit.sh:

  • Commit Message Format: Change the timestamp format or message prefix
  • Selective Staging: Use specific git add patterns instead of -A
  • Branch Selection: Push to specific branches only
  • Notifications: Add desktop notifications or Slack messages

Disabling

To temporarily disable auto-commits:

  1. Remove or comment out the sessionEnd hook in hooks.json
  2. Or set an environment variable: export SKIP_AUTO_COMMIT=true

Notes

  • The hook uses --no-verify to avoid triggering pre-commit hooks
  • Failed pushes won't block session termination
  • Requires appropriate git credentials configured
  • Works with both Copilot coding agent and GitHub Copilot CLI