> For the complete documentation index, see [llms.txt](https://support.attackforge.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.attackforge.com/app/getting-started/creating-and-managing-projects.md).

# Creating & Updating Projects

## Overview <a href="#overview" id="overview"></a>

A project is where a single piece of security testing lives, from setup through to the final report. Everything in AttackForge is organised around projects. Each project holds its **scope** (the assets being tested) and its **findings** (the vulnerabilities discovered), and every vulnerability is linked to the assets it affects.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2F3nqFWgmwjwYjdu2Bh10e%2Fprojects-in-attackforge.svg?alt=media&amp;token=00592178-839a-47ef-93c2-a54b078949c8" alt=""><figcaption></figcaption></figure>

## Why projects matter <a href="#why-projects-matter" id="why-projects-matter"></a>

Keeping each engagement in its own project gives you:

* **A clear boundary.** Scope, team, methodology, timeline and findings stay together, so nobody works from out-of-date spreadsheets or email threads.
* **Controlled access.** Only the people and groups you add can see the project, at the access level you choose.
* **Consistent delivery.** Test suites, scoring systems, vulnerability codes and email templates are set per project, so every engagement of the same type is run and reported the same way.
* **Data that flows on.** Findings feed into workflow automations ([Flows](/app/modules/flows.md)), group dashboards, analytics, [portfolios](/app/modules/portfolios.md), SLAs and reports automatically.

## What a project can be <a href="#what-a-project-can-be" id="what-a-project-can-be"></a>

A project can be any kind of security testing activity, including but not limited to:

| Application and code                | Infrastructure                              | Adversary and compliance            | People and places       |
| ----------------------------------- | ------------------------------------------- | ----------------------------------- | ----------------------- |
| Web application penetration test    | Network and infrastructure penetration test | Red team and purple team assessment | OSINT assessment        |
| Web services / API penetration test | Wireless network assessment                 | PCI DSS assessment                  | Physical security audit |
| Mobile application penetration test | Configuration audit                         | SCADA assessment                    |                         |
| Source code review                  | Cloud Penetration Testing                   | Bug Bounties and VDP                |                         |

## Who benefits <a href="#who-benefits" id="who-benefits"></a>

| Who                                      | How projects help                                                                                                         |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Security consultancies and MSSPs**     | Each client engagement is run as a repeatable project, with the client given controlled access to their own results.      |
| **Internal security teams**              | Testing across applications and business units is tracked in one place, with findings routed to the right teams and SLAs. |
| **Testers**                              | A structured workspace, with the scope, test cases and reporting all in one place.                                        |
| **Clients, developers and asset owners** | They see what was tested, what was found and what needs fixing, without waiting for a PDF.                                |

## Who can create projects <a href="#who-can-create-projects" id="who-can-create-projects"></a>

Only **Administrators**, **Project Coordinators** and **users with delegated privileges** can create projects. Other users can ask for one through a [project request](https://support.attackforge.com/app/getting-started/requesting-a-project).

## How a project fits together <a href="#how-a-project-fits-together" id="how-a-project-fits-together"></a>

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FFrjh4weNY4d2LEwSrcHG%2Fproject-fits-together.svg?alt=media&amp;token=db0649d5-339b-4cfa-a2fe-bec18e0312a3" alt=""><figcaption></figcaption></figure>

A project can start from an approved request, from scratch, or as a clone of an earlier project. Once created, its findings feed workflow automations ([Flows](/app/modules/flows.md)), dashboards, [portfolios](/app/modules/portfolios.md), SLAs, notifications and reports without any extra work.

## Create a project <a href="#create-a-project" id="create-a-project"></a>

To start, open the **Projects** module from the main menu and select `New` → `Project` from the page menu. The Projects page also lists every project you can access.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Fv9IG2sTQ7m4AzSj7NpUQ%2FScreenshot%202026-10-22%20at%202.47.59%E2%80%AFpm.png?alt=media&amp;token=da8af371-91d8-4a49-8cf5-ed599bc3237b" alt=""><figcaption></figcaption></figure>

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FovFUKodumg3L1OrcJjct%2FScreenshot%202026-10-22%20at%202.49.41%E2%80%AFpm.png?alt=media&amp;token=74a3f8cb-d1cb-4ddc-b933-588acbedb465" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Approving a project request?** When you select *Approve and Setup Project* on a request, you go through the same form, with the request details already filled in. See [Requesting a Project](https://support.attackforge.com/app/getting-started/requesting-a-project).
{% endhint %}

### Project name <a href="#project-name" id="project-name"></a>

The project name is how everyone, including testers, clients and stakeholders, identifies this piece of work in lists, dashboards, notifications and reports. Use a name people will recognise, such as *Acme Customer Portal: Web App Pentest, Q4 2026*.

### Project code <a href="#project-code" id="project-code"></a>

The project code is a short reference, often a job number, purchase order or internal ticket, that ties the project to systems outside AttackForge. It doesn't have to be unique and can be any value.

**Validating the code.** As you type, AttackForge checks whether another project already uses the same code. It can also fetch the latest project code, so you can keep a numbering sequence such as *PT-2026-041*, then *PT-2026-042*.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FAKN6UlK4lz399A59AVOx%2FScreenshot%202026-10-22%20at%202.53.26%E2%80%AFpm.png?alt=media&amp;token=44df83d5-6f8b-4a05-af57-5f3009885200" alt=""><figcaption></figcaption></figure>

### Link groups <a href="#link-groups" id="link-groups"></a>

Linking a group is the quickest way to give a whole set of people the right access to a project, without inviting each person individually. You can link one or more groups, which might represent, for example:

* a customer
* a customer's third party, such as a development agency
* a customer's business units or subsidiaries
* a platform or technology
* a functional team
* a security team

When a group is linked:

* its members automatically get access to the project, at the access level set in the group's settings
* members can filter Analytics by the group
* the project's data appears in the Group Dashboard

{% hint style="info" %}
**Important:** group members don't receive project emails by default. To turn this on, change the group's settings when you create or update the group.
{% endhint %}

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FRTgkjD2OKcnj4P7LN4Xe%2FScreenshot%202026-10-22%20at%202.55.30%E2%80%AFpm.png?alt=media&amp;token=11a6510f-1fcf-4ad5-a3b8-3d2902a70821" alt=""><figcaption></figcaption></figure>

### Link portfolio streams <a href="#link-portfolio-streams" id="link-portfolio-streams"></a>

[Portfolios](/app/modules/portfolios.md) let leaders see risk across many projects, for example by business unit, product line or client. Linking a project to one or more portfolio streams means its vulnerabilities and assets appear in those portfolios automatically. Nobody has to add them by hand.

You can link portfolio streams when you create the project, when you approve a project request, or later when you edit the project.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FSw733j0k1JiaZ7H6fKxw%2FScreenshot%202026-10-22%20at%203.00.44%E2%80%AFpm.png?alt=media&amp;token=94334252-a802-4aff-b3bc-2b1805e55417" alt=""><figcaption></figcaption></figure>

### Scope <a href="#scope" id="scope"></a>

Scope defines what testers are authorised to test, and it is what every finding is linked to. An asset can be, for example:

| Testing type           | Example asset                                    |
| ---------------------- | ------------------------------------------------ |
| Web application or API | A URL                                            |
| Application or server  | An application or server name                    |
| Network                | A subnet or IP address, such as `192.168.0.1/24` |
| Source code review     | A file                                           |
| Social engineering     | A person                                         |
| Physical audit         | An address                                       |

You can add assets in three ways:

* **Enter them manually.**
* **Paste a list.** For projects with a lot in scope, choose the delimiter that separates the assets in your list.
* **Select existing assets.** If you use the Assets module, you can choose from assets you already have access to. This keeps asset records, ownership and history consistent across projects.

[Assets Module](/app/modules/assets.md) *enabled:*

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Fx1RCSZ6NRoGV7WBXIr80%2FScreenshot%202026-10-22%20at%203.03.09%E2%80%AFpm.png?alt=media&amp;token=d0517499-01b6-4e83-b201-2ff40c9dae02" alt=""><figcaption></figcaption></figure>

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2F3UatNZxHcPe7vgdQL8Pi%2FScreenshot%202026-10-22%20at%203.03.48%E2%80%AFpm.png?alt=media&amp;token=cb958d98-5408-4f8d-945d-d1d9759f5288" alt=""><figcaption></figcaption></figure>

[Assets Module](/app/modules/assets.md) *disabled:*

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FBn6bTJIz1YOPLGw1oG7M%2FScreenshot%202026-10-22%20at%203.04.36%E2%80%AFpm.png?alt=media&amp;token=87f72b67-13ea-493e-87bd-901a56765d3c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Fg1mVPBfSPDMh5as6eakC%2FScreenshot%202026-10-22%20at%203.05.24%E2%80%AFpm.png?alt=media&amp;token=451fd3df-ada0-40de-95be-724b3a427c66" alt=""><figcaption></figcaption></figure>

### Test suites <a href="#test-suites" id="test-suites"></a>

A test suite is a methodology, playbook or checklist, made up of test cases. Applying one or more suites to a project means:

* **testers** structure their work the same way every time
* **clients** can see what was and wasn't tested
* **developers** can trace vulnerabilities back to the test cases that found them

Hover over a suite to see what it's for and how many test cases it contains. AttackForge comes with test suites based on industry benchmarks such as OWASP, MITRE, OSSTMM, among others. You can also build your own in the **Test Suites** module.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FkzTSElETzbR5TPvkDt61%2FScreenshot%202026-10-22%20at%203.11.34%E2%80%AFpm.png?alt=media&amp;token=6e3dee31-b20d-47cd-80a7-207bb8061dfa" alt=""><figcaption></figcaption></figure>

### Vulnerability scoring system <a href="#vulnerability-scoring-system" id="vulnerability-scoring-system"></a>

Scoring systems decide how severity is rated for findings in the project. Choose the ones that match what your client, regulator or internal policy expects.

You can apply **more than one scoring system to the same project**. AttackForge then shows the tester the score from each system for every finding, and the tester picks the priority that fits best. This helps when different audiences need different views. For example, a client's compliance team may need CVSS while their application owners think in OWASP risk terms, and the tester still makes the final call on priority.

{% hint style="info" %}
**Manual scoring is always available.** Testers can always set the priority manually, whichever other scoring systems are selected. Manual scoring can't be turned off.
{% endhint %}

| Option                                            | How severity is rated                                                                                                                      | Use it when                                                                                                                                                                                  |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Manual**                                        | Priority (Critical, High, Medium, Low, Info) plus Likelihood of Exploitation, from 1 (*Difficult to Exploit*) to 10 (*Trivial to Exploit*) | Always available to testers, and can't be turned off. Use it on its own for a simple rating, or when no formal methodology fits the assessment, such as physical or social engineering tests |
| **CVSS v3.1 Baseline**                            | CVSS v3.1 base score                                                                                                                       | You need a widely recognised industry-standard score                                                                                                                                         |
| **CVSS v3.1 Baseline + Temporal**                 | Base score adjusted for exploit maturity and fix availability                                                                              | Scores should reflect the current threat                                                                                                                                                     |
| **CVSS v3.1 Baseline + Temporal + Environmental** | All of the above, adjusted for the target environment                                                                                      | Scores should reflect the business impact in this environment                                                                                                                                |
| **CVSS v4**                                       | The latest version of the CVSS standard                                                                                                    | Your clients, regulators or internal policy require CVSS v4, or you want scores on the current version of the standard                                                                       |
| **OWASP Risk Rating Methodology**                 | Overall risk from likelihood (threat agent and vulnerability factors) and impact (technical and business factors)                          | Application testing, where business impact matters as much as technical severity                                                                                                             |
| **Microsoft DREAD**                               | Damage, Reproducibility, Exploitability, Affected users and Discoverability, each rated and combined into a score                          | Threat modelling, or teams that already rate risk with DREAD                                                                                                                                 |
| **Custom scoring system**                         | Your own factors, scales and calculation, designed and built in the Administration module                                                  | Your organisation or clients have their own risk methodology that findings must follow                                                                                                       |

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Fov9SoAfZa7UVJXbfkWxm%2FScreenshot%202026-10-22%20at%203.21.07%E2%80%AFpm.png?alt=media&amp;token=028dbe30-c880-414b-8a8a-501d30da299a" alt=""><figcaption></figcaption></figure>

### Vulnerability code <a href="#vulnerability-code" id="vulnerability-code"></a>

The vulnerability code gives every finding in the project a short, readable ID. People can then refer to *SEC01-4* in emails, tickets and meetings, instead of a long title. For example, with the code `SEC01`, the first vulnerability is `SEC01-1` and the second is `SEC01-2`.

You can change the code at any time, as long as it isn't used by any other project.

Changing the code updates the IDs of the project's existing vulnerabilities, except linked vulnerabilities. Those are managed in the settings of the project they came from.

{% hint style="info" %}
**Important:** changing the code can break references in external tools, such as ticketing systems, that use the old IDs.
{% endhint %}

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FCeFsdEWDJpBnusw8Shbz%2FScreenshot%202026-10-22%20at%203.22.54%E2%80%AFpm.png?alt=media&amp;token=f507b0b9-b45b-458f-8cc9-37ce7ff0272f" alt=""><figcaption></figcaption></figure>

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FxHU5ygNIDEfPlA6FvZB4%2FScreenshot%202026-10-22%20at%203.23.14%E2%80%AFpm.png?alt=media&amp;token=996a7476-06a4-468d-b698-c4169908d47b" alt=""><figcaption></figcaption></figure>

### Apply SLAs on vulnerabilities <a href="#apply-slas-on-vulnerabilities" id="apply-slas-on-vulnerabilities"></a>

SLAs set a deadline for fixing each vulnerability based on its severity, so remediation is tracked against a clear target. This option only appears if SLAs are turned on in `Administration` → `Vulnerabilities` → `SLA`.

By default, SLAs are applied automatically to every new vulnerability, whether it is created or imported. Select **Manual** to opt out and apply SLAs yourself later. You might do this when you want to:

* start the clock only when the project ends
* start the clock only once the application team has acknowledged the findings
* apply SLAs only on certain projects, such as compliance or regulatory testing
* apply SLAs only to certain vulnerabilities

To apply them manually later, see re-apply SLAs on vulnerabilities in *Updating Vulnerabilities*.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FmimBueC8LcDyHxoFTZKA%2FScreenshot%202026-10-22%20at%203.24.51%E2%80%AFpm.png?alt=media&amp;token=7e4e510a-6e52-4b92-9b62-10be70efe7b5" alt=""><figcaption></figcaption></figure>

### Custom fields <a href="#email-the-project-team-on-events" id="email-the-project-team-on-events"></a>

Custom fields let you capture the project information your organisation needs, beyond the standard settings. You configure them against projects in the **Administration** module in `Administration` → `Projects`, and they then appear on the project form for everyone creating or updating a project.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FzCPvm3KGbsT1hGsyEbim%2FScreenshot%202026-10-22%20at%203.26.30%E2%80%AFpm.png?alt=media&amp;token=e25224a7-b5cc-4882-b1cb-bb7c98536619" alt=""><figcaption></figcaption></figure>

**Why use custom fields:**

* **Capture everything in one place.** Details that would otherwise sit in spreadsheets, emails or a separate ticketing system, such as commercial references, approvals and compliance drivers, stay with the project.
* **Make projects consistent.** Every project of the same type records the same information, which makes them easier to review, compare and audit.
* **Report and filter on what matters to you.** Custom field values can be used in filtering and searching, workflow automations, APIs, email templates, reports and more.
* **Fit your own process.** Mirror your consultancy's engagement workflow or your internal team's governance requirements without changing how AttackForge works.

**Examples:**

| Who uses it                      | Example custom fields                                                                                                  |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Security consultancies and MSSPs | Purchase order number, statement of work reference, billing contact, account manager, engagement type (new or renewal) |
| Internal security teams          | Business unit, application owner, data classification, release date, change request number, risk register reference    |
| Compliance-driven testing        | Compliance framework (such as PCI DSS or ISO 27001), audit period, auditor contact                                     |
| Testing logistics                | Testing window, out-of-scope systems, credentials handover method, emergency contact                                   |

**Show or hide fields with logic.** Custom fields can be set to appear only when they're relevant, based on the values of other fields. For example, a *Compliance framework* field might appear only when *Compliance-driven test* is set to *Yes*, or *Change request number* only when the target is in production. Forms stay short, and people only see the questions that apply to them.

**Control who can view and edit each field.** Every custom field supports field-level access control for **View** and **Edit**. You decide who can see a field and who can change it. For example:

* commercial fields, such as purchase order or pricing, are visible only to Project Coordinators and Administrators
* a client can view the agreed testing window but not edit it
* only the security team can edit a data classification field

This means you can hold internal and sensitive information on the same project that clients and other stakeholders use, without exposing it to them.

### Email the project team on events <a href="#email-the-project-team-on-events" id="email-the-project-team-on-events"></a>

Email notifications keep people up to date without them having to log in. For example, a client's security lead can hear about a new critical vulnerability straight away, rather than waiting for the final report. Turn on the events that matter for this project, and team members then opt in to the notifications they want.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FQkA9nuqKkEqYlBEx8YwN%2FScreenshot%202026-10-22%20at%203.34.09%E2%80%AFpm.png?alt=media&amp;token=4ca2dc39-76ed-44c0-8134-f243870aa3ae" alt=""><figcaption></figcaption></figure>

**How new vulnerabilities are notified.** Choose one of two options:

| Option                                                      | What's sent                                   | Best for                                            |
| ----------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------- |
| **Send Individual Email For Each New Vulnerability**        | One email per new vulnerability               | High-severity alerts that need action straight away |
| **Send One Email with Details For All New Vulnerabilities** | One email summarising all new vulnerabilities | Busy recipients, or projects with many findings     |

Both go to team members who have opted in and to any additional recipients you add.

**Email templates.** Each notification uses an HTML template, and a standard template is pre-loaded for you to adjust. You can use tags such as `{projectName}` or `{priority}` to insert project and vulnerability details. You can customise:

* the template for individual vulnerability emails
* the template for the summary vulnerability email
* the template for the daily start and stop testing email. This is sent to the project team, and you can add recipients outside the team, such as a SOC that needs to know when testing traffic is expected.

The full list of tags is in [Reference: email template tags](#reference-email-template-tags).

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FZrqzFdpkwi1MU5WGULKs%2FScreenshot%202026-10-22%20at%203.35.56%E2%80%AFpm.png?alt=media&amp;token=69c7b6ab-72c4-49e0-a8f2-09ad4e90e2af" alt=""><figcaption></figcaption></figure>

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2F8QmZjXQLy7i7g9QTfwtT%2FScreenshot%202026-10-22%20at%203.36.17%E2%80%AFpm.png?alt=media&amp;token=c8736e65-a2a0-45f3-8842-c30b3afa1fe8" alt=""><figcaption></figcaption></figure>

### Invite project team members <a href="#invite-project-team-members" id="invite-project-team-members"></a>

You can invite the whole team while you create the project, so everyone has access from day one. For each person, set:

| Setting                 | What it controls                                                                                                                                                                     |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Access level**        | What they can do in the project: View, Upload or Edit. See the info panel and the [Access Control Matrix](/app/access-control-matrix.md) for details.                                |
| **Project role**        | Their role in the work, such as pentester, customer or developer. This is for collaboration only, so others know who does what. It doesn't grant privileges; access level does that. |
| **Notification events** | Which project emails they receive                                                                                                                                                    |
| **Test suites**         | Assigns them to every test case in the selected suites, which spreads the testing workload across the team. Available to Edit users only.                                            |

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FdT3E0aIOUE0avzgLMiG8%2FScreenshot%202026-10-22%20at%203.40.53%E2%80%AFpm.png?alt=media&amp;token=f0a80ed0-4de6-42ae-ad3b-8679f6e3a034" alt=""><figcaption></figcaption></figure>

### Features <a href="#features" id="features"></a>

Feature settings let you decide what each audience sees. For example, you might hide reporting from a client until the report is final, or keep attack chains internal to the testing team. For each feature, set the minimum project access level needed to see it and which user roles get access.

| Feature           | Can be turned off? | Notes                                                               |
| ----------------- | ------------------ | ------------------------------------------------------------------- |
| **Test Cases**    | No, not currently  | Set the minimum access level and the roles that can see them        |
| **Retesting**     | Yes                | Controls retesting rounds                                           |
| **Attack Chains** | Yes                | Controls [Attack Chains](/app/getting-started/attack-chains.md)     |
| **Reporting**     | Yes                | <p>Covers downloadable reports </p><p>and the Reporting section</p> |

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FuOcxAqhkxhOmVOaKB2w1%2FScreenshot%202026-10-22%20at%203.49.29%E2%80%AFpm.png?alt=media&amp;token=84688ff8-f6e7-4c55-8d7c-05af2d9e2fbe" alt=""><figcaption></figcaption></figure>

### **Pages**

Pages give a project extra places to collaborate and share information, beyond findings and reports. Each page is its own space on the project, where the team can write content and upload files. You might use pages for:

* a **summary** of the engagement for stakeholders
* **rules of engagement**, contacts and escalation paths
* **testing notes** or a daily status log
* **handover material** for the remediation team, such as walkthrough videos or supporting documents

Pages give everyone on the project one place to find this information, so it doesn't end up scattered across email threads and shared drives.

**Turn pages on or off.** Each page has its own toggle, so you only show the pages a project needs.

**Control who can use each page.** Every page has its own access controls, so you can share some information widely and keep other pages to a smaller group. Use **Restrict Access To Following** and **Add Access** to choose who can use the page. Access is granted at three levels:

| Permission               | Who has it by default              |
| ------------------------ | ---------------------------------- |
| **View Page**            | Project Access: View, Upload, Edit |
| **Upload Files to Page** | Project Access: Upload, Edit       |
| **Edit Page**            | Project Access: Edit               |

The **Page Access Overview** lists who can view the page, upload files to it and edit it, so you can check access at a glance before you share anything sensitive.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2F5r7zZJF7mXNRTOXZIN7B%2FScreenshot%202026-10-22%20at%203.44.46%E2%80%AFpm.png?alt=media&amp;token=7916dacb-bf8a-4ee7-b445-b29cdd1f04f7" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Important:** Project Coordinators and Administrators always have access to every feature and page. This can't be restricted.
{% endhint %}

### Review and create <a href="#review-and-create" id="review-and-create"></a>

Check the details, then create the project. You're taken straight to the new project's dashboard.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Fr9FQXP41iwWsUijx8z1N%2FScreenshot%202026-10-22%20at%203.56.31%E2%80%AFpm.png?alt=media&amp;token=8b78e3b3-61a1-44a9-89a7-54b69ac1bcec" alt=""><figcaption></figcaption></figure>

## Manage a project <a href="#manage-a-project" id="manage-a-project"></a>

Once a project is created, its **Project Dashboard** becomes the control centre for the engagement. From there you can change settings, pause work, start the next round of testing, and eventually retire the project.

| Task                              | Who can do it                             | Where                                               |
| --------------------------------- | ----------------------------------------- | --------------------------------------------------- |
| Update settings                   | Users with permission to edit the project | Cog icon, top right of the Project Dashboard        |
| Place on hold or take off hold    | Users with permission to edit the project | Project Dashboard                                   |
| Clone a project                   | Administrators and Project Coordinators   | `Clone Project` in the Projects module actions menu |
| View project logs                 | Administrators and Project Coordinators   | Project settings                                    |
| Archive, restore or destroy       | Administrators                            | Projects module actions menu                        |
| Custom [Actions](/app/actions.md) | As configured                             | Projects module actions menu                        |

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Ffix5zA8u1QkB9Foa3SDw%2FScreenshot%202026-10-22%20at%203.58.40%E2%80%AFpm.png?alt=media&amp;token=0074633e-afdb-4b3b-b963-fc971910f165" alt=""><figcaption></figcaption></figure>

## Update a project <a href="#update-a-project" id="update-a-project"></a>

Select the **cog** icon in the top right of the Project Dashboard to open the project's settings. You can change most of the settings you chose at creation, such as scope, team, test suites, email templates and features.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FodwmncgVukBIPR17k4Yy%2FScreenshot%202026-10-22%20at%203.59.49%E2%80%AFpm.png?alt=media&amp;token=b635d917-e1d0-4b91-b767-a34ea38d03b2" alt=""><figcaption></figcaption></figure>

## Place a project on hold or off hold <a href="#place-a-project-on-hold-or-off-hold" id="place-a-project-on-hold-or-off-hold"></a>

Place a project **On-Hold** when something blocks progress, such as a test environment being down, credentials not yet supplied, or a change freeze. Everyone then knows the work is paused and why, and the delay is recorded. Take it **Off-Hold** when work can resume. You can do this at any time.

When you change the status:

* the project team is emailed the reason
* the project's status is updated
* the change is logged in the project's tracking history, which you can see with the `Tracking` button on the Project Dashboard

This gives you a record of every delay, which is useful when you report on timelines or explain changes to the schedule.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FVM4h6MKet7ls7xFV9bR3%2FScreenshot%202026-10-22%20at%204.01.25%E2%80%AFpm.png?alt=media&amp;token=03875a12-3dbb-43e3-951a-e70d9ac504f7" alt=""><figcaption></figcaption></figure>

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FlW0G2W5i2n2QAky0IJ3I%2FScreenshot%202026-10-22%20at%204.01.40%E2%80%AFpm.png?alt=media&amp;token=01687734-8974-482c-8002-9627c9ef5b08" alt=""><figcaption></figcaption></figure>

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Furr3gAwD5heRFOQArOf2%2FScreenshot%202026-10-22%20at%204.03.34%E2%80%AFpm.png?alt=media&amp;token=3577469f-c73e-432a-9b5a-39bc05518bca" alt=""><figcaption></figcaption></figure>

## Clone a project <a href="#clone-a-project" id="clone-a-project"></a>

Cloning starts a new project from an existing one, so you don't rebuild the same setup each time. Administrators and Project Coordinators can clone projects. Use it to:

* **set up the next round of testing,** such as an annual pentest of the same application
* **track vulnerabilities for particular assets across projects**
* **retest only the open vulnerabilities** from a previous project

**What the new project gets:**

| Carried over      | Details                                                                                                                                                |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Project settings  | Name, codes, test suites, scope, email templates, portfolios, custom fields and project team. You can change any of these before you create the clone. |
| Project workspace | All notes and files previously uploaded or created                                                                                                     |
| Project notes     | All previous project notes, except private notes                                                                                                       |
| Executive summary | Including any uploaded files                                                                                                                           |
| Vulnerabilities   | Optional. You choose which ones to bring across.                                                                                                       |

To clone a project, select `Clone Project` in the Projects module actions menu.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FpQ171tn0gzscv9evcvKR%2FScreenshot%202026-10-22%20at%204.05.32%E2%80%AFpm.png?alt=media&amp;token=f02de0de-115c-4d3d-a730-b38f5cefdf96" alt=""><figcaption></figcaption></figure>

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Fg0XxShphvURSOdpMZP3B%2FScreenshot%202026-10-22%20at%204.05.56%E2%80%AFpm.png?alt=media&amp;token=8bc1bfa6-d946-4605-b510-4c76c39dc882" alt=""><figcaption></figcaption></figure>

1. **Configure the new project.** Review the settings carried over and change them as needed. For example, update the name, dates and scope for this round.
2. **Select vulnerabilities.** Choose any vulnerabilities from the source project to bring into the new one.
3. **Select options.** Choose from the cloning options, then select `Review and Create Project`.

{% hint style="info" %}
**Important: vulnerabilities are shared, not copied.** Vulnerabilities you bring across are linked to both projects. They stay in the source project and aren't duplicated. A change made in either project, such as a status update after a retest, appears in both. The assets affected by each vulnerability are added to the new project's scope.
{% endhint %}

Because the vulnerability is shared, its full history stays intact across rounds of testing. You can see when it was first found, when it was retested and when it was closed, without merging duplicates.

## View project logs <a href="#view-project-logs" id="view-project-logs"></a>

Project logs record every event on the project. Use them to troubleshoot ("who changed the scope, and when?") or for audit and reporting. Administrators and Project Coordinators can open the logs from the project's settings page.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Fg3d0RsvuZGh9zkfJdO7a%2FScreenshot%202026-10-22%20at%204.08.33%E2%80%AFpm.png?alt=media&amp;token=61b33170-b8ca-40aa-8ae7-032031fede6a" alt=""><figcaption></figcaption></figure>

## Archive, restore or delete a project <a href="#archive-restore-or-delete-a-project" id="archive-restore-or-delete-a-project"></a>

Archiving takes a finished or abandoned project out of day-to-day view without losing its data. Only Administrators can archive, restore or destroy projects.

| Action      | What happens                                                                                                                                              | How                                                                                              |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| **Archive** | The project moves to the archive. Non-admin users can no longer see it, and its vulnerabilities are left out of dashboards, analytics and other sections. | Select `Archive Project` in the Projects module actions menu, then confirm                       |
| **Restore** | The project returns to normal view                                                                                                                        | Open `Archived Projects` on the Projects page, then select `Restore Project` in the actions menu |
| **Destroy** | The project and all its data are deleted permanently                                                                                                      | Open `Archived Projects`, then select `Destroy Project Data` in the actions menu                 |

{% hint style="info" %}
**Warning:** a destroyed project and its data can't be recovered. Archive a project if you might need it again, or if you need to keep it for audit or retention purposes.
{% endhint %}

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FZYvERFvJXegi11AOZMCi%2FScreenshot%202026-10-22%20at%204.10.04%E2%80%AFpm.png?alt=media&amp;token=60923636-48a0-4800-a04b-67389acd1cc0" alt=""><figcaption></figcaption></figure>

## Tips and best practices <a href="#tips-and-best-practices" id="tips-and-best-practices"></a>

* **Use groups for access wherever possible.** One group for each client or business unit saves you from inviting people one at a time on every project.
* **Pick from the Assets module rather than retyping assets.** Findings then build up a history against the same asset across projects.
* **Agree the scoring system before testing starts.** Changing it partway through makes findings harder to compare.
* **Set the vulnerability code early and leave it alone.** Changing it later can break ticket references in other tools.
* **Clone for recurring tests and retests.** You keep the setup and the vulnerability history, and avoid duplicate findings.
* **Use On-Hold with a clear reason.** It explains schedule changes for you and leaves an audit trail.
* **Archive rather than destroy** unless you're sure the data is no longer needed.

## FAQ <a href="#faq" id="faq"></a>

**I can't see `New` → `Project`.** Only Administrators, Project Coordinators and delegated users can create projects. Ask one of them, or submit a [project request](https://support.attackforge.com/app/getting-started/requesting-a-project).

**I'm in a linked group but don't get project emails.** Group members don't receive project emails by default. An administrator needs to turn this on in the group's settings.

**Can I hide test cases from a client?** Test Cases can't be turned off at the moment, but you can set the minimum access level and the roles that can see them.

**If I clone a project and close a vulnerability in the new one, does it close in the old one too?** Yes. Vulnerabilities brought across when cloning are shared between the two projects, so their status is the same in both.

**Can I bring back a destroyed project?** No. Destroying a project is permanent. Archived projects can be restored.

## Related pages <a href="#related-pages" id="related-pages"></a>

* [Requesting a Project](https://support.attackforge.com/app/getting-started/requesting-a-project)
* [Groups](/app/modules/groups.md)
* [Portfolios](/app/modules/portfolios.md)
* [Assets](/app/modules/assets.md)
* [Test Suites](/app/modules/test-suite-builder.md)
* [Access Control Matrix](/app/access-control-matrix.md)
* [SLAs](/app/getting-started/vulnerability-slas.md)
* [Updating Vulnerabilities](/app/getting-started/updating-vulnerabilities.md)
* [Custom Email Meta Tags](https://support.attackforge.com/app/getting-started/notifications#custom-email-meta-tags)

## Reference: email template tags <a href="#reference-email-template-tags" id="reference-email-template-tags"></a>

All project email templates are sent as HTML, so include HTML tags in your template. A standard template is pre-loaded for each email, and you can adjust it. To add your own custom tags, see [*Custom Email Meta Tags*](https://support.attackforge.com/app/getting-started/notifications#custom-email-meta-tags).

### Individual email for each new vulnerability <a href="#individual-email-for-each-new-vulnerability" id="individual-email-for-each-new-vulnerability"></a>

This template is available when **Send Individual Email For Each New Vulnerability** is selected.

| Tag                            | Inserts                                                                                                                                |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
| `{firstName}`                  | The team member's first name. Left blank for additional recipients who aren't on the team.                                             |
| `{consultant}`                 | The first and last name of the consultant sending the email                                                                            |
| `{projectName}`                | The project name                                                                                                                       |
| `{priority}`                   | Critical, High, Medium, Low or Info                                                                                                    |
| `{title}`                      | The vulnerability title                                                                                                                |
| `{asset}`                      | The affected asset                                                                                                                     |
| `{likelihood_of_exploitation}` | A number from 1 to 10                                                                                                                  |
| `{is_zeroday}`                 | Yes or No                                                                                                                              |
| `{description}`                | The description                                                                                                                        |
| `{attack_scenario}`            | The attack scenario                                                                                                                    |
| `{remediation_recommendation}` | The remediation recommendation                                                                                                         |
| `{proof_of_concept}`           | Steps to reproduce, in full HTML                                                                                                       |
| `{notes}`                      | Notes                                                                                                                                  |
| `{tags}`                       | Tags, as an unordered list                                                                                                             |
| `{link}`                       | A hyperlink to the vulnerability in AttackForge                                                                                        |
| `{link.url}`                   | The vulnerability's URL on its own                                                                                                     |
| `{key.<custom_field>}`         | A vulnerability  custom field, by its key. For example, the key `custom_score` becomes `{key.custom_score}`.                           |
| `{vulnerability.<tag>}`        | A tag referenced in [Custom Email Meta Tags](https://support.attackforge.com/app/getting-started/notifications#custom-email-meta-tags) |

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Fr6LcC2ZfZO2FGrkBVVVq%2FScreenshot%202026-10-22%20at%204.17.00%E2%80%AFpm.png?alt=media&amp;token=cf127529-f555-48f4-8de0-fc9cd0afe1ac" alt=""><figcaption></figcaption></figure>

### One email for all new vulnerabilities <a href="#one-email-for-all-new-vulnerabilities" id="one-email-for-all-new-vulnerabilities"></a>

This template is available when **Send One Email with Details For All New Vulnerabilities** is selected. You can use `{firstName}`, `{consultant}` and `{projectName}` anywhere in the template.

{% hint style="info" %}
**Important:** vulnerability tags must go inside a `{vulnerabilities}` … `{/vulnerabilities}` block, which repeats for each vulnerability. For example: `{vulnerabilities}<li>{priority} - {title}</li>{/vulnerabilities}`
{% endhint %}

The tags you can use inside the block are: `{priority}`, `{title}`, `{asset}`, `{likelihood_of_exploitation}`, `{is_zeroday}`, `{description}`, `{attack_scenario}`, `{remediation_recommendation}`, `{proof_of_concept}`, `{notes}`, `{tags}`, `{link}`, `{link.url}` and `{vulnerability.<tag>}`. Each inserts the same value as in the individual email.

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2F4jxn5lNf7o6WLW54m6RN%2FScreenshot%202026-10-22%20at%204.17.12%E2%80%AFpm.png?alt=media&amp;token=f7363080-a96f-4905-ba2a-793eab4d2c7f" alt=""><figcaption></figcaption></figure>

### Daily start and stop testing email <a href="#daily-start-and-stop-testing-email" id="daily-start-and-stop-testing-email"></a>

You set this template when you create or update a project. It's sent daily to the project team, and you can add recipients outside the team, such as a SOC.

| Tag                                                                                                                                                   | Inserts                                                                                                                                |
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `{firstName}`                                                                                                                                         | The team member's first name. Left blank for additional recipients.                                                                    |
| `{consultant}`                                                                                                                                        | The consultant's first and last name                                                                                                   |
| `{started_or_stopped_testing}`                                                                                                                        | "Started Testing" or "Stopped Testing"                                                                                                 |
| `{projectName}`, `{projectStartDate}`, `{projectEndDate}`                                                                                             | The project name and dates                                                                                                             |
| `{key.<custom_field>}`                                                                                                                                | A project custom field, by its key. For example, the key `out_of_scope` becomes `{key.out_of_scope}`.                                  |
| `{project.<tag>}`                                                                                                                                     | A tag referenced in [Custom Email Meta Tags](https://support.attackforge.com/app/getting-started/notifications#custom-email-meta-tags) |
| `{scope}`                                                                                                                                             | The scope, as an unordered list                                                                                                        |
| `{link}`, `{link.url}`                                                                                                                                | A link to the project in AttackForge, or its URL on its own                                                                            |
| `{startTesting}` … `{/startTesting}`                                                                                                                  | Content sent only when testing starts                                                                                                  |
| `{stopTesting}` … `{/stopTesting}`                                                                                                                    | Content sent only when testing stops                                                                                                   |
| `{totalVulns}`, `{totalCriticalVulns}`, `{totalHighVulns}`, `{totalMediumVulns}`, `{totalLowVulns}`, `{totalInfoVulns}`                               | Total vulnerabilities, overall and by priority                                                                                         |
| `{totalVulnsToday}`, `{totalCriticalVulnsToday}`, `{totalHighVulnsToday}`, `{totalMediumVulnsToday}`, `{totalLowVulnsToday}`, `{totalInfoVulnsToday}` | Vulnerabilities found today, overall and by priority                                                                                   |
| `{totalActionedTestCasesToday}`, `{totalFailedTestCasesToday}`                                                                                        | Test cases actioned and failed today                                                                                                   |
| `{totalRemainingTestCases}`, `{totalRemainingTestCases%}`                                                                                             | Test cases remaining, as a number and a percentage                                                                                     |
| `{totalCompletedTestCases}`, `{totalCompletedTestCases%}`                                                                                             | Test cases completed, as a number and a percentage                                                                                     |

{% hint style="info" %}
**Important:** asset tags must go inside an `{assets}` … `{/assets}` block. For example: `{assets}<li>{name} - {details}</li>{/assets}`. The tags you can use inside the block are `{name}`, `{type}`, `{details}`, `{external_id}` and `{key.<custom_field>}`, an asset custom field such as `{key.asset_owner}`.
{% endhint %}

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2Fyv0eqrHVYj0GKO9CKik2%2FScreenshot%202026-10-22%20at%204.21.17%E2%80%AFpm.png?alt=media&amp;token=7d1c643b-1453-4cff-abd2-ea968b34d115" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://support.attackforge.com/app/getting-started/creating-and-managing-projects.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
