Affinity

Affinity is a companion gameplay mechanic in Fallout 4. Companions can develop personal connections to your character and some may ask for your help with quests of their own. Each companion has a distinct personality and values, actions or dialogue that please one companion may displease another.

Raising the affinity value grants additional dialogue into their history or the possibility of romance. Reaching maximum affinity with a companion will unlock a special perk. The affinity value is a hidden statistic, meaning it is not possible to check your progress without console commands.

Scale
Typically, all companions begin at an affinity value of 0. If the affinity value reaches 500, they will "admire" you and often reveal new dialogue. Raising their affinity to the maximum value of 1000 will result in them "idolizing" you, at which point you are granted their companion perk.

Lowering the affinity into a negative value far enough will displease the companion, and they will issue a single warning to you, asking you to change your ways. If the affinity value drops further, they will become angry and refuse to travel with you. This decision is permanent.

For most companions, new dialogue will be triggered when the affinity value reaches 250, 500, 750 and 1000.

Reactions
There are four different reactions a companion can have towards your actions/dialogue that will affect their affinity value:

A companion's reaction to most actions has a cooldown period, meaning it is not possible to perform the same action several times in a row to gain/lose affinity. For example, modifying several weapons in a row will trigger only one instance of approval from Paladin Danse.

One (albeit time consuming) exploit around the cooldown is to save and reload after a companion's reaction. Reloading the game resets the cooldown and the action can be performed again to gain additional approval. See the exploits section from more.

It is however possible to perform different actions back-to-back and receive two or more separate instances of approval. For example, picking a lock and then hack a terminal will grant two separate approvals from Deacon. For a full list of what pleases or displeases a companion, see the respective companion page.

Affinity can be also increased passively by simply having a companion follow you. The increase depends on the current affinity level and will be lower with higher affinity values. The formula for the increase is 40 - 0,033 x affinity value. The increase by choosing a companion only applies if a quest has been completed since the companion was last chosen.

Romance
Certain companions are potential candidates for romance and throughout the course of their affinity based conversations, the dialogue option to "flirt" will be available. At the highest level of affinity - and final conversation - the "romance" option will be available. Both options are speech checks. Successfully flirting will reduce the difficulty of the final romance check and successfully passing that will make the companion a love interest. This is result in them addressing you in a more affectionate manner. Also, sleeping in a bed with them nearby will also grant the Lover's Embrace perk.

Companion romances are not mutually exclusive; if a new companion is romanced, previously romanced partners will still confer the benefits of the Lover's Embrace. (However, some romanced partners will "dislike" flirting in their presence.)

Companion perks
Those perks are acquired by reaching the maximum level of affinity with a companion. The perks obtained this way are permanently obtained, whether you keep travelling with the associated companion or not.

Exploits
This process can be repeated indefinitely to increase the companions affinity towards you. You must save and load or else you have to wait until the cooldown ends so the action will affect affinity again.

Weapon modding

 * Codsworth and Danse love this. Preston and X6-88 like this.  It is easily repeated with the "None" attachment, which simply removes an existing modification and costs nothing to produce.

Armor modding

 * Codsworth and Danse love this. X6-88 likes this.  See Weapon modding.

Entering power armor

 * Danse and X6-88 like this. Note that Strong dislikes this, so he should not be in the same settlement or general location while performing this.

Stealing

 * MacCready likes this. Can be repeated by placing an item in a container owned by someone else and taking it back out, preferably in an area you can close from prying eyes such as a hotel room in Goodneighbor.

Lockpicking
Such safes can be found in:
 * Cait, Deacon, and Piper like this. MacCready likes this, but only to unowned locks, whereas Piper dislikes picking unowned locks.
 * Can be repeated by using a safe that has a terminal attached to it, opening the safe then using the terminal to lock it again.
 * Sanctuary (unless scrapped)
 * Fiddler's Green Trailer Estates
 * Medford Memorial Hospital (advanced)
 * Back Street Apparel (advanced 1st floor)
 * Hubris Comics (Grognak's axe case)
 * Greenetech Genetics (Expert 7th floor)
 * Super-Duper Mart (advanced)

Using chems

 * Hancock likes this, as does Cait before her companion quest. Afterwards, she dislikes it.

Using alcohol

 * Cait likes this before her companion quest. Afterwards, she is indifferent.

Nudity

 * Hancock and Cait like this. Can be repeated by fast traveling to safe settlements with all armor/clothing unequipped.

Cannibalism

 * Strong likes this. (Requires Cannibal perk)

Healing Dogmeat

 * Everyone except Strong and X6-88 like this. Repeating this will likely require deliberately wounding Dogmeat in a settlement with the character(s) in question nearby, as you can only have one companion out at a time.

With the exception of healing Dogmeat, Curie and Nick Valentine have no repeatable/farmable actions, so the approval gained from accepting and completing quests should be prioritized to them. Nick likes hacking terminals, but the game has a finite number of them (but still more than enough to max his Affinity as long as his companion quest is completed before running out).