session-logger — хук для GitHub Copilot: что делает и как установить
Хук для GitHub Copilot записывает время старта и завершения сессий агента, рабочие каталоги и запросы пользователя в локальные JSON-файлы. Пригодится для аудита и сбора аналитики.
.claude/settings.jsonЧто делает session-logger
Хук отслеживает ключевые события агента кодинга GitHub Copilot: запуск сессии, её завершение и отправку пользовательских запросов. Данные пишутся локально в структурированном виде JSON. События сессий попадают в файл logs/copilot/session.log, а текст запросов — в logs/copilot/prompts.log.
Работу обеспечивают три bash-скрипта: log-session-start.sh, log-session-end.sh и log-prompt.sh. Для каждого вызова задан таймаут 5 секунд. При старте скрипт фиксирует точное время и рабочий каталог проекта. Уровень детализации управляется переменной окружения LOG_LEVEL, а при передаче SKIP_LOGGING=true запись полностью отключается.
Без добавления каталога logs/ в .gitignore конфиденциальные промпты легко случайно отправить в удалённый репозиторий. Скриптам также обязательно нужны права на запуск через chmod +x.
Какие задачи решает
- Вести локальный аудит действий агента кодинга
- Отслеживать время начала и завершения рабочих сессий
- Сохранять историю отправленных пользователем промптов в JSON
- Отключать сбор логов через флаг
SKIP_LOGGING=trueпри работе с приватным кодом
Примеры запросов агенту
- Напиши функцию валидации email в
utils.py - Найди и исправь синтаксические ошибки в
main.go - Обнови зависимости в
package.jsonи запусти сборку
Как установить session-logger
Вручную: положить файлы
.claude/settings.jsonБлок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json
По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду
Вопросы о session-logger
Как установить session-logger в GitHub Copilot?
Скопируйте папку хука в .github/hooks/session-logger, создайте каталог mkdir -p logs/copilot и сделайте скрипты исполняемыми с помощью chmod +x .github/hooks/session-logger/*.sh. Затем зафиксируйте конфигурацию хуков в репозитории или укажите параметры в .claude/settings.json.
Что делает session-logger?
Он перехватывает события сессий GitHub Copilot и сохраняет время запуска, завершения, рабочую директорию и текст запросов в файлы session.log и prompts.log. Все записи формируются в формате JSON для дальнейшего аудита.
Как отключить запись логов или ограничить их только ошибками?
Для полного отключения логирования задайте переменную окружения SKIP_LOGGING=true. Если нужно фиксировать только сбои, укажите LOG_LEVEL=ERROR в конфигурации хука.
Исходный текст
session-logger · MIT
---
name: 'Session Logger'
description: 'Logs all Copilot coding agent session activity for audit and analysis'
tags: ['logging', 'audit', 'analytics']
---
# Session Logger Hook
Comprehensive logging for GitHub Copilot coding agent sessions, tracking session starts, ends, and user prompts for audit trails and usage analytics.
## Overview
This hook provides detailed logging of Copilot coding agent activity:
- Session start/end times with working directory context
- User prompt submission events
- Configurable log levels
## Features
- **Session Tracking**: Log session start and end events
- **Prompt Logging**: Record when user prompts are submitted
- **Structured Logging**: JSON format for easy parsing
- **Privacy Aware**: Configurable to disable logging entirely
## Installation
1. Copy this hook folder to your repository's `.github/hooks/` directory:
```bash
cp -r hooks/session-logger .github/hooks/
```
2. Create the logs directory:
```bash
mkdir -p logs/copilot
```
3. Ensure scripts are executable:
```bash
chmod +x .github/hooks/session-logger/*.sh
```
4. Commit the hook configuration to your repository's default branch
## Log Format
Session events are written to `logs/copilot/session.log` and prompt events to `logs/copilot/prompts.log` in JSON format:
```json
{"timestamp":"2024-01-15T10:30:00Z","event":"sessionStart","cwd":"/workspace/project"}
{"timestamp":"2024-01-15T10:35:00Z","event":"sessionEnd"}
```
## Privacy & Security
- Add `logs/` to `.gitignore` to avoid committing session data
- Use `LOG_LEVEL=ERROR` to only log errors
- Set `SKIP_LOGGING=true` environment variable to disable
- Logs are stored locally only
```json
{
"version": 1,
"hooks": {
"sessionStart": [
{
"type": "command",
"bash": ".github/hooks/session-logger/log-session-start.sh",
"cwd": ".",
"timeoutSec": 5
}
],
"sessionEnd": [
{
"type": "command",
"bash": ".github/hooks/session-logger/log-session-end.sh",
"cwd": ".",
"timeoutSec": 5
}
],
"userPromptSubmitted": [
{
"type": "command",
"bash": ".github/hooks/session-logger/log-prompt.sh",
"cwd": ".",
"env": {
"LOG_LEVEL": "INFO"
},
"timeoutSec": 5
}
]
}
}
```
© github · MIT · github/awesome-copilot